Cleaned up the logic of UI dispay and the uploading of the files
This commit is contained in:
parent
f8b6b5268e
commit
628f43ad2e
47
app.py
47
app.py
@ -515,6 +515,23 @@ def upload_project_pdfs(project_name):
|
||||
if pdf_file and pdf_file.filename and pdf_file.filename.lower().endswith('.pdf'):
|
||||
pdf_filename = secure_filename(pdf_file.filename)
|
||||
pdf_save_path = os.path.join(pdf_dir_path, pdf_filename)
|
||||
|
||||
# --- Check for overwrite and delete corresponding TXT ---
|
||||
if os.path.isfile(pdf_save_path):
|
||||
print(f"Overwriting existing PDF: {pdf_save_path}")
|
||||
try:
|
||||
base_name, _ = os.path.splitext(pdf_filename)
|
||||
txt_output_dir = os.path.join(project_base_path, 'extracted_texts')
|
||||
txt_file_path = os.path.join(txt_output_dir, base_name + '.txt')
|
||||
if os.path.isfile(txt_file_path):
|
||||
print(f"Deleting corresponding TXT file due to overwrite: {txt_file_path}")
|
||||
os.remove(txt_file_path)
|
||||
else:
|
||||
print(f"Corresponding TXT file not found for overwritten PDF: {txt_file_path}")
|
||||
except OSError as txt_err:
|
||||
print(f"Warning: Could not delete corresponding TXT file {txt_file_path} during overwrite: {txt_err}")
|
||||
# --- End TXT deletion check ---
|
||||
|
||||
try:
|
||||
print(f"Saving uploaded PDF file to: {pdf_save_path}")
|
||||
pdf_file.save(pdf_save_path)
|
||||
@ -654,9 +671,33 @@ def add_project():
|
||||
if pdf_file and pdf_file.filename and pdf_file.filename.lower().endswith('.pdf'):
|
||||
pdf_filename = secure_filename(pdf_file.filename)
|
||||
pdf_save_path = os.path.join(pdf_dir_path, pdf_filename)
|
||||
print(f"Saving PDF file to: {pdf_save_path}")
|
||||
pdf_file.save(pdf_save_path)
|
||||
saved_pdfs.append(pdf_filename)
|
||||
|
||||
# --- Check for overwrite and delete corresponding TXT ---
|
||||
if os.path.isfile(pdf_save_path):
|
||||
print(f"Overwriting existing PDF: {pdf_save_path}")
|
||||
try:
|
||||
base_name, _ = os.path.splitext(pdf_filename)
|
||||
txt_output_dir = os.path.join(project_base_path, 'extracted_texts')
|
||||
txt_file_path = os.path.join(txt_output_dir, base_name + '.txt')
|
||||
if os.path.isfile(txt_file_path):
|
||||
print(f"Deleting corresponding TXT file due to overwrite: {txt_file_path}")
|
||||
os.remove(txt_file_path)
|
||||
else:
|
||||
print(f"Corresponding TXT file not found for overwritten PDF: {txt_file_path}")
|
||||
except OSError as txt_err:
|
||||
print(f"Warning: Could not delete corresponding TXT file {txt_file_path} during overwrite: {txt_err}")
|
||||
# --- End TXT deletion check ---
|
||||
|
||||
# --- Save the PDF --- (Ensure this block is correctly indented relative to the outer `if pdf_file...`)
|
||||
try:
|
||||
print(f"Saving uploaded PDF file to: {pdf_save_path}")
|
||||
pdf_file.save(pdf_save_path)
|
||||
saved_pdfs.append(pdf_filename)
|
||||
except Exception as e:
|
||||
print(f"Error saving uploaded PDF {pdf_filename} for {safe_project_name}: {e}")
|
||||
# Store error message if needed, but don't necessarily stop processing other files
|
||||
# errors.append(f"Error saving {pdf_filename}: {e}") # Example if you collect errors
|
||||
|
||||
elif pdf_file and pdf_file.filename:
|
||||
print(f"Warning: Skipped non-PDF file during initial project add: {pdf_file.filename}")
|
||||
# Optionally add to an errors list to return to the user
|
||||
|
||||
475
projects/MTN6/extracted_texts/MTN6_SYSDL-MCM01.txt
Normal file
475
projects/MTN6/extracted_texts/MTN6_SYSDL-MCM01.txt
Normal file
@ -0,0 +1,475 @@
|
||||
SQR4010T
|
||||
S7000
|
||||
SQR4010TS7000
|
||||
SQR4010T
|
||||
S7000
|
||||
SQR4010TS7000
|
||||
SQR4010TS7000 SQR4010TS7000
|
||||
SQR4010TS7000 SQR4010TS7000
|
||||
SQR4010T
|
||||
S7000
|
||||
SQR4010TS7000
|
||||
SQR4010T
|
||||
S7000
|
||||
SQR4010TS7000
|
||||
SQR4010TS7000
|
||||
SQR4010TS7000
|
||||
SQR4010TS7000 SQR4010TS7000
|
||||
SQR4010TS7000 SQR4010TS7000
|
||||
SQR4010TS7000
|
||||
SQR4010TS7000
|
||||
SQR4010TS7000
|
||||
SQR4010TS7000
|
||||
SQR4010TS7000 SQR4010TS7000
|
||||
SQR4010TS7000 SQR4010TS7000
|
||||
SQR4010TS7000 SQR4010TS7000
|
||||
SQR4010TS7000
|
||||
SQR4010TS7000
|
||||
SQR4010TS7000
|
||||
SQR4010TS7000
|
||||
ST 1.5kW 1.4375
|
||||
ST 1.5kW 1.4375
|
||||
ST 1.5kW 1.4375ST 1.5kW 1.4375
|
||||
PALLET STAGING
|
||||
PALLET STAGING
|
||||
SQR4010TS7000 SQR4010TS7000
|
||||
SQR4010TS7000 SQR4010TS7000
|
||||
SQR40
|
||||
10T
|
||||
S7000
|
||||
SQR4010T
|
||||
S7000
|
||||
SQR4010T
|
||||
S7000
|
||||
SQR4010T
|
||||
S7000
|
||||
SQR4010TS7000 SQR4010TS7000
|
||||
SQR4010TS7000 SQR4010TS7000
|
||||
SQR4010TS7000 SQR4010TS7000
|
||||
SQR40
|
||||
10T
|
||||
S7000
|
||||
SQR4010T
|
||||
S7000
|
||||
ST 1.5kW 1.4375
|
||||
ST 1.5kW 1.4375
|
||||
ST 1.5kW 1.4375
|
||||
ST 1.5kW 1.4375
|
||||
SQR4010T
|
||||
S7000
|
||||
SQR4010TS7000
|
||||
SQR4010T
|
||||
S7000
|
||||
SQR4010TS7000
|
||||
SQR4010TS7000 SQR4010TS7000
|
||||
SQR4010TS7000 SQR4010TS7000
|
||||
SQR4010T
|
||||
S7000
|
||||
SQR4010TS7000
|
||||
SQR4010T
|
||||
S7000
|
||||
SQR4010TS7000
|
||||
SQR4010TS7000
|
||||
SQR4010TS7000
|
||||
SQR4010TS7000 SQR4010TS7000
|
||||
TRAILER DIMENSIONS
|
||||
TRAILER DIMENSIONS
|
||||
EL. 2'-6"
|
||||
EL. 2'-6"EL. 2'-6"
|
||||
EL. 5'-2"TYP. (2) PLCS
|
||||
EL. 6'-4"TYP. (2) PLCS
|
||||
EL. 13'-1"EL. 3'-1" (PLTF)TYP. (4) PLCS
|
||||
EL. 2'-6"
|
||||
EL. 5'-2"TYP. (2) PLCS
|
||||
EL. 6'-4"TYP. (2) PLCS
|
||||
EL. 13'-1"EL. 3'-1" (PLTF)TYP. (3) PLCS
|
||||
UL1_3_VFD15HP280 FPM UL1_4_VFD15HP280 FPMUL1_5_VFD13HP420 FPMUL1_6_VFD13HP420 FPMUL1_7_VFD13HP420 FPM
|
||||
UL1_8_VFD13HP420 FPM UL1_9_VFD15HP280 FPM UL1_10A_VFD13HP280 FPMUL1_10B_VFD13HP280 FPM
|
||||
UL1_11_VFD12HP280 FPMUL1_12_VFD12HP280 FPMUL1_13_VFD15HP280 FPM
|
||||
UL2_3_VFD13HP280 FPM UL2_4_VFD15HP280 FPM
|
||||
UL2_5_VFD13HP280 FPMUL2_6_VFD13HP420 FPMUL2_7_VFD13HP420 FPMUL2_8_VFD13HP420 FPMUL2_9_VFD13HP420 FPMUL2_10_VFD13HP420 FPM
|
||||
UL3_1_VFD12HP120 FPM
|
||||
UL3_2_VFD17.5HP280 FPMUL3_3_VFD13HP280 FPMUL3_4_VFD12HP280 FPMUL3_5_VFD13HP420 FPMUL3_6_VFD13HP420 FPMUL3_7_VFD13HP420 FPMUL3_8_VFD13HP420 FPMUL3_9_VFD13HP420 FPM
|
||||
UL4_3_VFD13HP280 FPM UL4_4_VFD15HP280 FPM
|
||||
UL4_9_VFD13HP280 FPM
|
||||
UL5_3_VFD13HP280 FPM UL5_4_VFD15HP280 FPM
|
||||
UL3_3_ENC1
|
||||
UL3_5_ENC1UL3_6_ENC1UL3_7_ENC1UL3_8_ENC1UL2_9_ENC1UL2_8_ENC1UL2_7_ENC1UL2_6_ENC1
|
||||
UL2_5_ENC1
|
||||
UL1_5_ENC1UL1_6_ENC1UL1_7_ENC1
|
||||
UL5_3_ENC1 UL5_4_ENC1
|
||||
UL4_3_ENC1 UL4_4_ENC1
|
||||
UL3_2_ENC1
|
||||
UL3_4_ENC1UL2_3_ENC1 UL2_4_ENC1
|
||||
UL1_3_ENC1 UL1_4_ENC1 UL1_9_ENC1
|
||||
UL1_5_TPE1UL1_6_TPE1UL1_7_TPE1
|
||||
UL1_9_TPE3
|
||||
UL1_9_TPE1
|
||||
UL1_9_TPE2
|
||||
UL1_9_TPE4
|
||||
UL1_9_TPE5
|
||||
UL1_11_TPE1UL1_11_TPE2
|
||||
UL1_12_TPE1
|
||||
UL4_9_TPE1
|
||||
UL4_9_TPE2
|
||||
UL4_9_TPE3
|
||||
UL4_9_TPE4
|
||||
UL4_9_TPE5
|
||||
UL5_3_TPE2UL4_3_TPE2
|
||||
UL3_1_TPE1
|
||||
UL2_3_TPE2UL1_3_TPE2
|
||||
UL1_4_TPE1UL2_4_TPE1 UL5_4_TPE1
|
||||
UL3_4_TPE1
|
||||
UL3_4_TPE2UL3_5_TPE1UL3_6_TPE1UL3_7_TPE1UL3_8_TPE1UL2_9_TPE1UL2_8_TPE1
|
||||
UL2_7_TPE1UL2_6_TPE2UL2_6_TPE1
|
||||
EPCUL5_4_EPC2
|
||||
EPCUL5_4_EPC1
|
||||
EPCUL4_4_EPC2
|
||||
EPCUL4_4_EPC1
|
||||
EPCUL3_2_EPC2
|
||||
EPCUL3_2_EPC1EPCUL2_4_EPC2
|
||||
EPCUL2_4_EPC1
|
||||
EPCUL1_4_EPC2
|
||||
EPCUL1_4_EPC1
|
||||
RBBGUL5_4_S2
|
||||
RBBGUL5_4_S1RBBGUL4_4_S2
|
||||
RBBGUL4_4_S1
|
||||
RBBGUL3_2_S2
|
||||
RBBGUL2_4_S2RBBGUL3_2_S1
|
||||
RBBGUL2_4_S1RBBGUL1_4_S2
|
||||
RBBGUL1_4_S1
|
||||
EPCUL4_9_EPC2
|
||||
EPCUL4_9_EPC1
|
||||
RBBGUL4_9_S2
|
||||
RBBGUL4_9_S1A
|
||||
EPCUL1_9_EPC2
|
||||
EPCUL1_9_EPC1
|
||||
RBBGUL1_9_S2
|
||||
RBBGUL1_9_S1A
|
||||
RBB
|
||||
RBBGPS1_1_S2
|
||||
STOP THE EPC AT 8'-3"
|
||||
STOP THE EPC AT 8'-3"
|
||||
EPCUL3_1_EPC2EPCUL3_1_EPC1
|
||||
RGUL3_1_SS1
|
||||
WUL1_9_JR1
|
||||
WUL1_9_JR2
|
||||
WUL4_9_JR2
|
||||
WUL4_9_JR1
|
||||
UL7_3_VFD15HP280 FPMUL7_4_VFD15HP280 FPM
|
||||
UL9_3_VFD15HP280 FPM
|
||||
UL9_4_VFD15HP280 FPM
|
||||
UL11_3_VFD15HP280 FPM
|
||||
UL11_11A_VFD13HP280 FPMUL11_11B_VFD13HP280 FPMUL11_12_VFD12HP280 FPMUL11_13_VFD12HP280 FPM
|
||||
UL11_14_VFD15HP280 FPM
|
||||
UL12_3_VFD15HP280 FPM
|
||||
UL7_3_TPE2
|
||||
UL11_9_ENC1UL11_12_ENC1UL11_13_ENC1
|
||||
UL7_4_ENC1UL7_3_ENC1
|
||||
EPCUL11_9_EPC1
|
||||
EPCUL11_10_EPC1
|
||||
RBBGUL11_9_S1A
|
||||
RBBGUL11_10_S1
|
||||
BB
|
||||
GPS3_1_S2
|
||||
RBBGPS4_1_S2
|
||||
RA
|
||||
STOP THE EPC AT 8'-3"
|
||||
STOP THE EPC AT 8'-3"
|
||||
WUL11_9_JR1
|
||||
V
|
||||
PS2_3_VFD15HP300 FPM
|
||||
PS1_1_VFD12HP300 FPMPS1_2_VFD12HP300 FPM
|
||||
PS2_4_VFD13HP300 FPM PS2_5_VFD17.5HP300 FPMPS2_6_VFD13HP300 FPM
|
||||
PS1_4_VFD17.5HP300 FPMPS1_3_VFD12HP300 FPM
|
||||
PS1_5_VFD15HP300 FPM
|
||||
EPCPS1_1_EP2EPCPS1_1_EPC1RBBGPS1_1_S1
|
||||
EPCPS2_6_EPC2RBBGPS2_6_S2
|
||||
EPCPS1_5_EPC1
|
||||
RBBGPS1_5_S1
|
||||
PS1_2_TPE1
|
||||
PS1_4_TPE1
|
||||
PS1_4_TPE2
|
||||
PS2_5_TPE1
|
||||
PS2_5_TPE2
|
||||
BBA
|
||||
PS1_2_TPE2 EPCPS1_5_EPC2
|
||||
RBBGPS1_5_S2
|
||||
STOP THE EPC AT 8'-3"
|
||||
EPCPS2_6_EPC1PS2_6_TPE1PS1_5_TPE1
|
||||
PS2_3_JPE1
|
||||
RBBGPS2_6_S1
|
||||
PS4_1_VFD12HP300 FPMPS4_2_VFD13HP300 FPMPS4_3_VFD12HP220 FPMPS4_4_VFD13HP220 FPMPS4_5_VFD15HP300 FPM PS4_6_VFD17.5HP300 FPM PS4_7_VFD17.5HP300 FPM PS4_8_VFD15HP300 FPM
|
||||
PS3_1_VFD12HP300 FPMPS3_2_VFD13HP300 FPM
|
||||
PS3_3_VFD13HP300 FPMPS3_4_VFD12HP300 FPM PS3_5_VFD15HP300 FPM PS3_6_VFD15HP300 FPM PS3_7_VFD110HP300 FPM
|
||||
PS4_9_VFD13HP300 FPM
|
||||
PS3_8_VFD13HP300 FPMPS3_9_VFD15HP300 FPMPS3_10_VFD15HP300 FPM
|
||||
PS4_11_VFD15HP300 FPMPS4_12_VFD13HP300 FPM
|
||||
PS3_11_VFD13HP300 FPMPS3_12_VFD13HP300 FPM
|
||||
PS4_13_VFD13HP300 FPMPS4_14_VFD13HP300 FPM
|
||||
EPCPS4_1_EPC2EPCPS4_1_EPC1RBBGPS4_1_S1
|
||||
EPCPS3_1_EPC1EPCPS3_1_EPC2RBBGPS3_1_S1
|
||||
EPCPS4_14_EPC1R
|
||||
EPCPS3_12_EPC1RBBGPS3_12_S1
|
||||
PS4_2_TPE1
|
||||
PS3_1_TPE1
|
||||
PS3_5_TPE1
|
||||
PS3_5_TPE2 PS3_9_TPE1
|
||||
PS4_14_TPE1
|
||||
PS3_12_TPE1
|
||||
BBAWPS3_3_JR1PS3_3_JPE1
|
||||
STOP THE EPC AT 8'-3"
|
||||
STOP THE EPC AT 8'-3"
|
||||
EPCPS3_12_EPC2
|
||||
RBBGPS3_12_S2A
|
||||
STOP THE EPC AT 8'-3"
|
||||
STOP THE EPC AT 8'-3"
|
||||
EPCPS4_14_EPC2
|
||||
BBA
|
||||
BBA
|
||||
BBGPS4_14_S1A
|
||||
RBBGPS4_14_S2BBA
|
||||
WPS4_8_JR1
|
||||
WPS4_13_JR1
|
||||
WPS3_7_JR1
|
||||
WPS2_3_JR1RBB
|
||||
STOP THE EPC AT 8'-3"
|
||||
EPCUL2_3_EPC2
|
||||
EPCUL2_3_EPC1
|
||||
RBB
|
||||
STOP THE EPC AT 8'-3"
|
||||
EPCUL1_3_EPC2
|
||||
EPCUL1_3_EPC1
|
||||
ST 1.5kW 1.4375
|
||||
ST 1.5kW 1.4375
|
||||
STOP THE EPC AT 8'-3"
|
||||
ST 1.5kW 1.4375
|
||||
X-SQ-41.5_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
ST 1.5kW 1.4375
|
||||
X-SQ-41.5_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
X-SQ-41.5_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
X-SQ-41.5_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
STOP THE EPC AT 8'-3"
|
||||
STOP THE EPC AT 8'-3"
|
||||
STOP THE EPC AT 8'-3"
|
||||
STOP THE EPC AT 8'-3"
|
||||
V
|
||||
PS3_2_TPE1
|
||||
EPCUL4_3_EPC2
|
||||
EPCUL4_3_EPC1
|
||||
RBBEPCUL5_3_EPC2
|
||||
EPCUL5_3_EPC1
|
||||
EPCUL7_1_EPC2
|
||||
EPCUL7_1_EPC1
|
||||
GUL2_3_S2
|
||||
GUL1_3_S2
|
||||
UL3_2_TPE2
|
||||
GUL5_3_S2
|
||||
STOP THE EPC AT 8'-3"
|
||||
STOP THE EPC AT 8'-3"
|
||||
UL1_3_TPE1UL2_3_TPE1
|
||||
UL2_3_LPE1
|
||||
UL2_3_LPE2UL4_3_TPE1
|
||||
UL4_3_LPE1
|
||||
UL4_3_LPE2UL5_3_TPE1
|
||||
UL5_3_LPE2
|
||||
UL5_3_LPE1
|
||||
UL2_3_FIO1
|
||||
UL1_3_FIO1
|
||||
UL3_2_TPE1UL3_2_LPE2
|
||||
UL3_2_LPE1
|
||||
UL3_2_FIO1
|
||||
UL4_3_FIO1
|
||||
UL5_3_FIO1
|
||||
UL6_2_FIO1
|
||||
UL7_3_FIO1
|
||||
UL8_2_FIO1
|
||||
UL9_3_FIO1
|
||||
UL10_2_FIO1
|
||||
UL11_3_FIO1
|
||||
UL12_3_FIO1
|
||||
RBBGUL1_3_S1
|
||||
RBBGUL2_3_S1
|
||||
UL1_3_LPE1
|
||||
UL1_3_DPE2
|
||||
UL1_8_ENC1UL1_8_TPE1
|
||||
RBB
|
||||
RBBGUL4_3_S2
|
||||
RBBGUL4_3_S1 UL4_5_VFD13HP420 FPMUL4_6_VFD13HP420 FPMUL4_7_VFD13HP420 FPM
|
||||
UL4_8_VFD13HP420 FPM
|
||||
UL4_5_ENC1UL4_6_ENC1UL4_7_ENC1UL4_5_TPE1UL4_6_TPE1UL4_7_TPE1
|
||||
UL4_4_TPE1
|
||||
UL4_8_ENC1UL4_8_TPE1 UL4_10A_VFD13HP280 FPMUL4_10B_VFD13HP280 FPM
|
||||
UL4_11_VFD12HP280 FPMUL4_12_VFD12HP280 FPMUL4_13_VFD15HP280 FPM
|
||||
UL4_11_TPE1UL4_11_TPE2
|
||||
UL4_12_TPE1RBBGPS2_1_S2EPCPS2_1_EP2EPCPS2_1_EPC1RBBGPS2_1_S1PS2_2_TPE1PS2_1_VFD12HP300 FPMPS2_2_VFD12HP300 FPMPS2_2_TPE2
|
||||
RBBGUL5_3_S1
|
||||
UL5_5_VFD13HP280 FPMUL5_6_VFD13HP420 FPMUL5_7_VFD13HP420 FPMUL5_8_VFD13HP420 FPMUL5_9_VFD13HP420 FPMUL5_10_VFD13HP420 FPMUL5_9_ENC1UL5_8_ENC1UL5_7_ENC1UL5_6_ENC1
|
||||
UL5_5_ENC1
|
||||
UL5_9_TPE1UL5_8_TPE1
|
||||
UL5_7_TPE1UL5_6_TPE2UL5_6_TPE1
|
||||
UL6_1_VFD12HP120 FPM UL6_2_VFD17.5HP280 FPM
|
||||
UL6_3_VFD13HP280 FPM
|
||||
UL6_4_VFD12HP280 FPMUL6_5_VFD13HP420 FPMUL6_6_VFD13HP420 FPMUL6_7_VFD13HP420 FPMUL6_8_VFD13HP420 FPMUL6_9_VFD13HP420 FPM
|
||||
UL6_3_ENC1
|
||||
UL6_5_ENC1UL6_6_ENC1UL6_7_ENC1UL6_8_ENC1
|
||||
UL6_2_ENC1
|
||||
UL6_4_ENC1
|
||||
UL6_1_TPE1 UL6_4_TPE1
|
||||
UL6_4_TPE2UL6_5_TPE1UL6_6_TPE1UL6_7_TPE1UL6_8_TPE1
|
||||
EPCUL6_2_EPC2
|
||||
EPCUL6_2_EPC1
|
||||
RBBGUL6_2_S2RBBGUL6_2_S1
|
||||
RBBEPCUL6_1_EPC2EPCUL6_1_EPC1
|
||||
RGUL6_1_SS1
|
||||
UL6_2_TPE2
|
||||
UL6_2_TPE1UL6_2_LPE2
|
||||
UL6_2_LPE1RBB
|
||||
UL12_DPM1MCM01
|
||||
UL11_DPM1MCM01
|
||||
UL10_DPM1MCM01
|
||||
UL9_DPM1MCM01
|
||||
UL8_DPM1MCM01
|
||||
UL7_DPM1MCM01
|
||||
UL6_DPM1MCM01
|
||||
UL5_DPM1MCM01
|
||||
UL4_DPM1MCM01
|
||||
UL3_DPM1MCM01
|
||||
UL2_DPM1MCM01
|
||||
UL1_DPM1MCM01
|
||||
PS1_DPM1MCM01
|
||||
PS3_DPM1MCM01 PS3_DPM2MCM01
|
||||
MCM01
|
||||
RBBGUL7_3_S2UL7_3_TPE1
|
||||
UL7_3_LPE2
|
||||
UL7_3_LPE1RBBGUL7_3_S1 UL7_9_VFD13HP280 FPM
|
||||
UL7_9_TPE2
|
||||
UL7_9_TPE4
|
||||
UL7_9_TPE5EPCUL7_4_EPC2
|
||||
EPCUL7_4_EPC1
|
||||
RBBGUL7_4_S2
|
||||
RBBGUL7_4_S1
|
||||
EPCUL7_9_EPC2
|
||||
EPCUL7_9_EPC1
|
||||
RBBGUL7_9_S2
|
||||
RBBGUL7_9_S1A
|
||||
WUL7_9_JR2
|
||||
WUL7_9_JR1
|
||||
UL7_5_VFD13HP420 FPMUL7_6_VFD13HP420 FPMUL7_7_VFD13HP420 FPM
|
||||
UL7_8_VFD13HP420 FPM
|
||||
UL7_5_ENC1UL7_6_ENC1UL7_7_ENC1UL7_5_TPE1UL7_6_TPE1UL7_7_TPE1
|
||||
UL7_4_TPE1
|
||||
UL7_8_ENC1UL7_8_TPE1 UL7_10A_VFD13HP280 FPMUL7_10B_VFD13HP280 FPM
|
||||
UL7_11_VFD12HP280 FPMUL7_12_VFD12HP280 FPM
|
||||
UL7_13_VFD15HP280 FPM
|
||||
UL7_11_TPE1UL7_11_TPE2
|
||||
UL7_12_TPE1
|
||||
UL7_9_TPE1
|
||||
PS3_6_TPE1
|
||||
PS3_7_JPE1
|
||||
PS3_9_TPE2
|
||||
PS3_10_JPE1
|
||||
PS3_12_TPE2
|
||||
UL8_1_VFD12HP120 FPM
|
||||
UL8_1_TPE1
|
||||
RBBEPCUL8_1_EPC2EPCUL8_1_EPC1
|
||||
RGUL8_1_SS1
|
||||
UL8_2_TPE1UL8_2_LPE2
|
||||
UL8_2_LPE1RBB
|
||||
UL8_3_VFD15HP280 FPMUL8_3_ENC1
|
||||
UL8_3_TPE1
|
||||
EPCUL8_3_EPC2RBBGUL8_3_S2
|
||||
RBBGUL8_3_S1
|
||||
UL8_4_VFD13HP280 FPMUL8_5_VFD13HP420 FPMUL8_6_VFD13HP420 FPMUL8_7_VFD13HP420 FPMUL8_8_VFD13HP420 FPMUL8_9_VFD13HP420 FPMUL8_8_ENC1UL8_7_ENC1UL8_6_ENC1
|
||||
UL8_5_ENC1
|
||||
UL8_4_ENC1
|
||||
UL8_8_TPE1UL8_7_TPE1
|
||||
UL8_6_TPE1UL8_5_TPE2UL8_5_TPE1
|
||||
UL8_2_VFD17.5HP120 FPM
|
||||
EPCUL8_3_EPC1
|
||||
EPCUL9_1_EPC2
|
||||
EPCUL9_1_EPC1
|
||||
RBBGUL9_3_S2UL9_3_TPE1
|
||||
UL9_3_LPE2
|
||||
UL9_3_LPE1RBBGUL9_3_S1 UL9_3_ENC1
|
||||
UL9_5_VFD12HP280 FPM
|
||||
UL9_6_VFD12HP280 FPMUL9_7_VFD13HP420 FPMUL9_8_VFD13HP420 FPMUL9_9_VFD13HP420 FPMUL9_10_VFD13HP420 FPMUL9_11_VFD12HP420 FPM
|
||||
UL9_5_ENC1
|
||||
UL9_7_ENC1UL9_8_ENC1UL9_9_ENC1UL9_10_ENC1
|
||||
UL9_6_ENC1
|
||||
UL9_6_TPE1
|
||||
UL9_6_TPE2UL9_7_TPE1UL9_8_TPE1UL9_9_TPE1UL9_10_TPE1
|
||||
EPCUL9_4_EPC2
|
||||
EPCUL9_4_EPC1
|
||||
RBBGUL9_4_S2RBBGUL9_4_S1UL9_4_ENC1
|
||||
UL8_2_TPE2
|
||||
UL9_3_TPE2
|
||||
UL9_4_TPE1
|
||||
UL10_1_VFD12HP120 FPM
|
||||
UL10_1_TPE1
|
||||
RBBEPCUL10_1_EPC2EPCUL10_1_EPC1
|
||||
RGUL10_1_SS1
|
||||
UL10_2_TPE1
|
||||
UL10_2_LPE2
|
||||
UL10_2_LPE1RBB
|
||||
UL10_2_VFD17.5HP120 FPM EPCUL10_3_EPC2RBBGUL10_3_S2RBBGUL10_3_S1EPCUL10_3_EPC1
|
||||
UL10_2_TPE2UL10_3_VFD12HP120 FPMUL10_4_VFD13HP420 FPMUL10_5_VFD13HP420 FPMUL10_6_VFD13HP420 FPMUL10_7_VFD13HP420 FPM
|
||||
UL10_4_ENC1UL10_5_ENC1UL10_6_ENC1UL10_4_TPE1UL10_5_TPE1UL10_6_TPE1
|
||||
UL10_3_TPE1
|
||||
UL10_7_ENC1UL10_7_TPE1UL10_8_VFD13HP420 FPMUL10_9_VFD13HP420 FPM
|
||||
UL10_10_VFD12HP420 FPM
|
||||
UL10_8_ENC1
|
||||
UL10_9_TPE1UL10_9_TPE2UL10_9_ENC1
|
||||
EPCUL11_1_EPC2EPCUL11_1_EPC1
|
||||
RBBG
|
||||
UL11_3_S2
|
||||
UL11_3_TPE1UL11_3_LPE2
|
||||
UL11_3_LPE1RBBGUL11_3_S1 UL11_3_ENC1UL11_3_TPE2
|
||||
EPCUL11_4_EPC2
|
||||
EPCUL11_4_EPC1
|
||||
RBBGUL11_4_S2RBBGUL11_4_S1
|
||||
UL11_8_VFD13HP300 FPM
|
||||
UL11_5_ENC1UL11_6_ENC1UL11_7_ENC1
|
||||
UL11_5_TPE1UL11_6_TPE1UL11_7_TPE1UL11_4_TPE1
|
||||
UL11_8_ENC1UL11_8_TPE1
|
||||
UL11_7_VFD13HP300 FPMUL11_6_VFD13HP300 FPMUL11_5_VFD13HP300 FPMUL11_4_VFD15HP420 FPM
|
||||
UL11_9_TPE1UL11_9_TPE2
|
||||
UL11_9_TPE3UL11_9_VFD13HP300 FPMUL11_10_VFD15HP280 FPM
|
||||
UL11_10_ENC1
|
||||
UL11_10_TPE1
|
||||
UL11_10_TPE2
|
||||
UL11_12_TPE1
|
||||
UL11_12_TPE2
|
||||
UL11_13_TPE1
|
||||
EPCUL12_3_EPC2
|
||||
EPCUL12_3_EPC1
|
||||
RBBG
|
||||
UL12_3_S2UL12_3_TPE1UL12_3_LPE2
|
||||
UL12_3_LPE1RBBGUL12_3_S1
|
||||
UL12_3_TPE2UL12_3_ENC1
|
||||
UL12_4_VFD15HP280 FPMUL12_4_ENC1
|
||||
UL12_4_TPE1
|
||||
EPCUL12_4_EPC2
|
||||
EPCUL12_4_EPC1
|
||||
RBBGUL12_4_S2
|
||||
RBBGUL12_4_S1
|
||||
UL12_5_VFD12HP280 FPMUL12_6_VFD13HP420 FPMUL12_8_VFD13HP420 FPM
|
||||
UL12_9_VFD13HP420 FPMUL12_10_VFD12HP420 FPMUL12_9_ENC1UL12_8_ENC1UL12_7_ENC1UL12_6_ENC1
|
||||
UL12_5_ENC1
|
||||
UL12_9_TPE1UL12_8_TPE1UL12_7_TPE1UL12_6_TPE2UL12_6_TPE1UL12_7_VFD13HP420 FPM
|
||||
UL11_14_TPE1
|
||||
PS4_2_JPE1
|
||||
PS4_4_TPE1PS4_4_TPE2
|
||||
BBA
|
||||
WPS4_2_JR1
|
||||
PS4_5_TPE1 PS4_6_TPE1 PS4_7_TPE1 PS4_8_JPE1
|
||||
PS4_10_TPE1
|
||||
PS4_10_VFD110HP300 FPM
|
||||
PS4_10_TPE2
|
||||
PS4_11_TPE1
|
||||
PS4_12_JPE1
|
||||
MCM01
|
||||
401
projects/MTN6/extracted_texts/MTN6_SYSDL-MCM02.txt
Normal file
401
projects/MTN6/extracted_texts/MTN6_SYSDL-MCM02.txt
Normal file
@ -0,0 +1,401 @@
|
||||
SQR4010TS7000 SQR4010TS7000
|
||||
SQR4010TS7000 SQR4010TS7000
|
||||
SQR4010TS7000 SQR4010TS7000
|
||||
SQR4010TS7000
|
||||
SQR4010TS7000
|
||||
SQR4010TS7000
|
||||
SQR4010TS7000
|
||||
SQR4010TS7000 SQR4010TS7000
|
||||
SQR4010TS7000 SQR4010TS7000
|
||||
SQR4010TS7000
|
||||
SQR4010TS7000
|
||||
SQR4010TS7000 SQR4010TS7000
|
||||
SQR40
|
||||
10T
|
||||
S7000
|
||||
SQR4010T
|
||||
S7000
|
||||
SQR4010T
|
||||
S7000
|
||||
SQR4010T
|
||||
S7000
|
||||
SQR4010TS7000 SQR4010TS7000
|
||||
SQR4010TS7000 SQR4010TS7000
|
||||
SQR4010TS7000 SQR4010TS7000
|
||||
SQR40
|
||||
10T
|
||||
S7000
|
||||
SQR4010T
|
||||
S7000
|
||||
SQR4010TS7000
|
||||
SQR4010TS7000
|
||||
SQR4010TS7000 SQR4010TS7000
|
||||
SQR4010TS7000 SQR4010TS7000
|
||||
SQR4010TS7000
|
||||
SQR40
|
||||
10T
|
||||
S7000
|
||||
SQR4010TS7000
|
||||
SQR4010T
|
||||
S7000
|
||||
SQR4010TS7000 SQR4010TS7000
|
||||
SQR4010TS7000 SQR4010TS7000
|
||||
SQR4010TS7000 SQR4010TS7000
|
||||
SQR4010TS7000
|
||||
SQR40
|
||||
10T
|
||||
S7000
|
||||
ST 1.5kW 1.4375
|
||||
ST 1.5kW 1.4375
|
||||
ST 1.5kW 1.4375
|
||||
ST 1.5kW 1.4375
|
||||
ST 1.5kW 1.4375
|
||||
ST 1.5kW 1.4375
|
||||
PS5_12_TPE2
|
||||
UL16_3_TPE2 UL17_4_TPE1
|
||||
UL16_2_TPE2UL16_3_TPE1UL15_4_TPE1
|
||||
UL15_3_TPE2
|
||||
UL14_3_TPE2
|
||||
UL13_10_TPE2
|
||||
UL13_11_TPE1
|
||||
UL21_16_TPE1
|
||||
UL21_15_TPE2
|
||||
UL21_11_ENC1
|
||||
UL18_10_ENC1
|
||||
UL18_3_ENC1
|
||||
UL17_3_ENC1 UL17_4_ENC1
|
||||
UL16_2_ENC1
|
||||
UL15_3_ENC1 UL15_4_ENC1
|
||||
UL15_6_ENC1
|
||||
UL13_8_ENC1
|
||||
UL14_3_ENC1
|
||||
UL21_13_TPE1
|
||||
UL21_13_TPE2
|
||||
UL13_8_TPE5
|
||||
UL13_8_TPE4
|
||||
UL13_8_TPE3
|
||||
UL13_8_TPE2
|
||||
UL13_8_TPE1
|
||||
UL18_12_TPE2
|
||||
PS5_8_JPE1
|
||||
UL21_11_TPE2
|
||||
UL21_11_TPE3
|
||||
UL21_11_TPE4
|
||||
UL16_4_TPE1
|
||||
UL17_5_TPE1UL17_7_TPE1UL17_7_TPE2UL17_8_TPE1UL17_9_TPE1
|
||||
UL16_6_TPE1
|
||||
UL15_6_TPE1
|
||||
UL18_10_TPE1
|
||||
UL18_10_TPE2UL18_10_TPE3
|
||||
UL18_10_TPE4PS5_10_TPE1
|
||||
UL13_10_ENC1UL13_11_ENC1
|
||||
UL18_14_ENC1UL18_15_ENC1
|
||||
UL21_15_ENC1UL21_16_ENC1UL21_13_ENC1UL16_4_ENC1
|
||||
UL17_5_ENC1UL17_6_ENC1
|
||||
UL17_7_ENC1UL17_8_ENC1UL17_9_ENC1
|
||||
UL16_5_ENC1 UL21_12_ENC1
|
||||
UL15_11_ENC1
|
||||
EPCUL17_4_EPC2
|
||||
EPCUL17_4_EPC1
|
||||
EPCUL16_2_EPC2
|
||||
EPCUL16_2_EPC1
|
||||
EPCUL15_4_EPC2
|
||||
EPCUL15_4_EPC1
|
||||
RBBGUL17_4_S2
|
||||
RBBGUL17_4_S1RBBGUL16_2_S2
|
||||
RBBGUL16_2_S1RBBGUL15_4_S2
|
||||
RBBGUL15_4_S1
|
||||
EPC
|
||||
UL21_11_EPC1
|
||||
EPCUL21_11_EPC2
|
||||
RBBGUL21_11_S1A
|
||||
RBBGUL21_11_S2
|
||||
EPCUL21_13_EPC1RBBGUL21_13_S1
|
||||
EPCUL21_13_EPC2RBBGUL21_13_S2
|
||||
EPC
|
||||
UL18_10_EPC1RBBGUL18_10_S1A
|
||||
EPCUL18_10_EPC2RBBGUL18_10_S2
|
||||
EPCUL13_8_EPC2
|
||||
EPCUL13_8_EPC1
|
||||
RBBGUL13_8_S2
|
||||
RBBGUL13_8_S1A
|
||||
BBGPS7_1_S2
|
||||
BBGPS6_1_S2
|
||||
BBGPS5_1_S2
|
||||
RA
|
||||
RA
|
||||
RA
|
||||
STOP THE EPC AT 8'-3"
|
||||
STOP THE EPC AT 8'-3"
|
||||
RBB
|
||||
STOP THE EPC AT 8'-3"
|
||||
WUL13_8_JR2
|
||||
WUL13_8_JR1
|
||||
WUL18_10_JR3
|
||||
W
|
||||
UL18_10_JR1
|
||||
WUL21_11_JR1
|
||||
V
|
||||
PS5_1_VFD12HP300 FPMPS5_2_VFD13HP300 FPM
|
||||
PS6_1_VFD12HP300 FPMPS6_2_VFD13HP300 FPM
|
||||
PS7_1_VFD12HP300 FPMPS7_2_VFD13HP300 FPM
|
||||
PS5_3_VFD13HP300 FPM
|
||||
PS5_4_VFD13HP300 FPM
|
||||
PS5_5_VFD15HP300 FPM PS5_6_VFD15HP300 FPMPS5_7_VFD110HP300 FPM
|
||||
PS5_8_VFD15HP300 FPM
|
||||
PS5_9_VFD13HP300 FPM
|
||||
PS5_10_VFD110HP300 FPM
|
||||
PS5_11_VFD12HP300 FPMPS5_12_VFD110HP300 FPMPS5_13_VFD13HP300 FPM
|
||||
PS6_5_VFD15HP300 FPM
|
||||
PS6_7_VFD17.5HP300 FPM
|
||||
PS6_9_VFD13HP300 FPM
|
||||
PS6_10_VFD110HP300 FPM
|
||||
PS6_11_VFD13HP300 FPMPS6_12_VFD110HP300 FPMPS6_13_VFD13HP300 FPM
|
||||
PS7_3_VFD12HP300 FPMPS7_4_VFD13HP300 FPMPS7_5_VFD17.5HP300 FPM
|
||||
PS7_6_VFD17.5HP300 FPM
|
||||
PS7_7_VFD110HP300 FPM PS7_8_VFD110HP300 FPM PS7_9_VFD17.5HP300 FPM PS7_10_VFD13HP300 FPM
|
||||
PS7_14_VFD17.5HP300 FPM
|
||||
PS5_4_TPE1PS5_4_TPE2 PS5_5_JPE1
|
||||
PS5_7_TPE1
|
||||
UL18_10_TPE5
|
||||
PS5_10_JPE1PS5_12_TPE1
|
||||
PS5_13_TPE1PS6_12_TPE2
|
||||
PS6_8_JPE1
|
||||
UL21_15_TPE1
|
||||
PS6_4_TPE1
|
||||
PS7_14_TPE2
|
||||
EPCPS5_1_EPC1EPCPS5_1_EPC2
|
||||
RBBGPS5_1_S1
|
||||
EPCPS6_1_EPC1EPCPS6_1_EPC2
|
||||
RBBGPS6_1_S1
|
||||
EPCPS7_1_EPC1EPCPS7_1_EPC2
|
||||
RBBGPS7_1_S1
|
||||
EPCPS5_13_EPC1
|
||||
EPCPS6_13_EPC2
|
||||
EPCPS7_14_EPC1
|
||||
RBB
|
||||
PS5_2_JPE1 BBA
|
||||
WPS5_6_JR1
|
||||
STOP THE EPC AT 8'-3"
|
||||
STOP THE EPC AT 8'-3"
|
||||
BBA
|
||||
WPS7_13_JR1 EPCPS7_14_EPC2
|
||||
RBB
|
||||
EPCPS7_9_EPC1
|
||||
RBBGPS7_9_S2EPCPS7_9_EPC2
|
||||
RBBGPS7_9_S1
|
||||
WPS5_9_JR1
|
||||
BBA
|
||||
WPS6_8_JR1
|
||||
BBA
|
||||
WPS5_9_JR2
|
||||
W
|
||||
PS6_9_JR1
|
||||
W
|
||||
UL21_5_JR1
|
||||
BBA
|
||||
WPS6_11_JR1
|
||||
EPCPS5_13_EPC2
|
||||
EPCPS6_13_EPC1RBB
|
||||
W
|
||||
PS5_10_JR1
|
||||
BBA
|
||||
WPS5_11_JR1
|
||||
RBB
|
||||
ST 1.5kW 1.4375
|
||||
ST 1.5kW 1.4375
|
||||
ST 1.5kW 1.4375
|
||||
X-SQ-96_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
X-SQ-41.5_43-180-P4.0
|
||||
ST 4.0kW 1.4375
|
||||
X-SQ-41.5_43-180-P4.0
|
||||
ST 4.0kW 1.4375
|
||||
X-SQ-96_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
X-SQ-96_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
STOP THE EPC AT 8'-3"
|
||||
STOP THE EPC AT 8'-3"
|
||||
V
|
||||
UL13_10_TPE1
|
||||
UL13_2_FIO1
|
||||
UL14_3_FIO1
|
||||
UL15_3_FIO1
|
||||
UL16_2_FIO1
|
||||
UL17_3_FIO1
|
||||
UL18_3_FIO1
|
||||
UL19_2_FIO1
|
||||
PS7_DPM3MCM02
|
||||
PS5_DPM1MCM02
|
||||
UL13_DPM1MCM02
|
||||
UL14_DPM1MCM02
|
||||
UL15_DPM1MCM02
|
||||
PS6_DPM1MCM02
|
||||
PS7_DPM1MCM02 PS7_DPM2MCM02
|
||||
UL16_DPM1MCM02
|
||||
UL18_DPM1MCM02
|
||||
UL19_DPM1MCM02
|
||||
UL20_DPM1MCM02
|
||||
MCM02
|
||||
UL17_DPM1MCM02
|
||||
UL21_DPM1MCM02
|
||||
UL13_1_VFD12HP120 FPM
|
||||
UL13_1_TPE1
|
||||
RBBEPCUL13_1_EPC2EPCUL13_1_EPC1
|
||||
RGUL13_1_SS1
|
||||
UL13_2_TPE1UL13_2_LPE2
|
||||
UL13_2_LPE1RBB
|
||||
EPCUL13_4_EPC2
|
||||
EPCUL13_4_EPC1
|
||||
RBBGUL13_4_S2
|
||||
RBBGUL13_4_S1UL13_4_VFD13HP300 FPMUL13_5_VFD13HP300 FPMUL13_6_VFD3HP300 FPM
|
||||
UL13_7_VFD13HP300 FPM
|
||||
UL13_4_ENC1UL13_5_ENC1UL13_6_ENC1UL13_4_TPE1UL13_5_TPE1UL13_6_TPE1
|
||||
UL13_3_TPE1
|
||||
UL13_7_ENC1UL13_7_TPE1UL13_3_VFD13HP280 FPMUL13_2_VFD17.5HP280 FPM UL13_8_VFD15HP280 FPMUL13_9A_VFD13HP300 FPMUL13_9B_VFD13HP300 FPMUL13_10_VFD12HP280 FPMUL13_11_VFD12HP280 FPMUL13_12_VFD15HP280 FPM
|
||||
PS5_2_TPE1
|
||||
RGPS5_13_SS1
|
||||
PS5_12_FIO1
|
||||
EPCUL14_3_EPC2
|
||||
EPCUL14_3_EPC1
|
||||
UL14_3_TPE1
|
||||
UL14_3_LPE1
|
||||
UL14_3_LPE2RBBGUL14_3_S2
|
||||
RBBGUL14_3_S1
|
||||
RBB
|
||||
UL14_3_VFD15HP280 FPM UL14_4_VFD15HP280 FPM
|
||||
UL14_5_VFD13HP280 FPMUL14_6_VFD13HP420 FPMUL14_8_VFD13HP420 FPMUL14_9_VFD13HP420 FPMUL14_10_VFD13HP420 FPMUL14_9_ENC1UL14_8_ENC1UL14_7_ENC1UL14_6_ENC1UL14_4_ENC1
|
||||
UL14_4_TPE1UL14_9_TPE1
|
||||
UL14_8_TPE1
|
||||
UL14_7_TPE2UL14_7_TPE1UL14_5_TPE1
|
||||
EPCUL14_4_EPC2
|
||||
EPCUL14_4_EPC1
|
||||
RBBGUL14_4_S2
|
||||
RBBGUL14_4_S1
|
||||
UL14_5_ENC1
|
||||
EPCUL15_3_EPC2
|
||||
EPCUL15_3_EPC1
|
||||
UL15_3_TPE1
|
||||
UL15_3_LPE1
|
||||
UL15_3_LPE2RBBGUL15_3_S2
|
||||
RBBGUL15_3_S1UL15_3_VFD15HP280 FPM UL15_4_VFD15HP280 FPM
|
||||
UL15_5_VFD12HP280 FPMUL15_5_ENC1
|
||||
UL15_6_VFD13HP420 FPMUL15_7_VFD13HP420 FPMUL15_8_VFD13HP420 FPMUL15_9_VFD13HP420 FPMUL15_10_VFD13HP420 FPMUL15_11_VFD12HP420 FPM
|
||||
UL15_6_TPE2UL15_7_ENC1UL15_7_TPE1UL15_8_TPE1UL15_9_TPE1
|
||||
UL15_10_TPE1
|
||||
UL15_8_ENC1UL15_9_ENC1UL15_10_ENC1
|
||||
UL16_1_VFD12HP120 FPM
|
||||
UL16_1_TPE1
|
||||
RBBEPCUL16_1_EPC2EPCUL16_1_EPC1
|
||||
RGUL16_1_SS1
|
||||
UL16_2_TPE1UL16_2_LPE2
|
||||
UL16_2_LPE1RBB UL16_2_VFD17.5HP280 FPMUL16_3_VFD13HP280 FPM
|
||||
UL16_4_VFD13HP280 FPMUL16_5_VFD12HP280 FPM
|
||||
UL16_6_ENC1UL16_7_ENC1UL16_8_ENC1UL16_6_TPE2UL16_7_TPE1UL16_8_TPE1UL16_6_VFD13HP280 FPMUL16_7_VFD13HP280 FPMUL16_8_VFD13HP280 FPMUL16_9_VFD12HP280 FPM
|
||||
EPCUL17_3_EPC2
|
||||
EPCUL17_3_EPC1
|
||||
UL17_3_TPE1
|
||||
UL17_3_LPE1
|
||||
UL17_3_LPE2RBBGUL17_3_S2
|
||||
RBBGUL17_3_S1UL17_3_VFD15HP120 FPM UL17_4_VFD15HP280 FPM
|
||||
UL17_5_VFD13HP420 FPMUL17_6_VFD12HP280 FPMUL17_7_VFD13HP420 FPMUL17_8_VFD13HP420 FPM
|
||||
UL17_10_VFD12HP420 FPMUL17_9_VFD13HP420 FPM
|
||||
EPCUL18_3_EPC2
|
||||
EPCUL18_3_EPC1
|
||||
UL18_3_TPE1
|
||||
UL18_3_LPE1
|
||||
UL18_3_LPE2RBBGUL18_3_S2
|
||||
RBBGUL18_3_S1UL18_3_VFD15HP120 FPM
|
||||
UL18_3_TPE2 UL18_4_TPE1
|
||||
UL18_4_ENC1
|
||||
UL18_5_TPE1UL18_5_ENC1
|
||||
EPCUL18_4_EPC2
|
||||
EPCUL18_4_EPC1
|
||||
RBBGUL18_4_S2
|
||||
RBBGUL18_4_S1UL18_4_VFD15HP280 FPM
|
||||
UL18_5_VFD13HP420 FPMUL18_6_VFD15HP280 FPMUL18_6_ENC1UL18_7_TPE1UL18_7_ENC1UL18_7_TPE2UL18_8_TPE1UL18_9_TPE1
|
||||
UL18_8_ENC1UL18_9_ENC1
|
||||
UL18_7_VFD13HP280 FPMUL18_8_VFD13HP280 FPMUL18_9_VFD13HP280 FPM
|
||||
WUL18_10_JR2
|
||||
UL18_10_VFD15HP280 FPM
|
||||
UL18_12_TPE1
|
||||
UL18_11_VFD15HP280 FPMUL18_12_VFD13HP280 FPM
|
||||
UL18_12_ENC1
|
||||
UL18_11_ENC1UL18_13A_VFD13HP280 FPMUL18_13B_VFD13HP280 FPM
|
||||
UL18_14_TPE1
|
||||
UL18_14_TPE2
|
||||
UL18_15_TPE1
|
||||
UL18_14_VFD12HP280 FPMUL18_15_VFD12HP280 FPMUL18_16_VFD15HP280 FPM
|
||||
UL19_1_VFD12HP120 FPM
|
||||
UL19_1_TPE1
|
||||
RBBEPCUL19_1_EPC2EPCUL19_1_EPC1
|
||||
RGUL19_1_SS1
|
||||
UL19_2_TPE1UL19_2_LPE2
|
||||
UL19_2_LPE1RBB
|
||||
UL20_3_ENC1UL20_3_FIO1EPCUL20_3_EPC2
|
||||
EPCUL20_3_EPC1
|
||||
UL20_3_TPE1
|
||||
UL20_3_LPE1
|
||||
UL20_3_LPE2RBBGUL20_3_S2
|
||||
RBBGUL20_3_S1UL20_3_VFD15HP120 FPM
|
||||
UL20_3_TPE2
|
||||
UL21_3_ENC1UL21_3_FIO1EPCUL21_3_EPC2
|
||||
EPCUL21_3_EPC1
|
||||
UL21_3_TPE1
|
||||
UL21_3_LPE1
|
||||
UL21_3_LPE2RBBGUL21_3_S2
|
||||
RBBGUL21_3_S1UL21_3_VFD15HP120 FPM
|
||||
UL21_3_TPE2
|
||||
UL19_2_ENC1EPCUL19_2_EPC2
|
||||
EPCUL19_2_EPC1
|
||||
RBBGUL19_2_S2
|
||||
RBBGUL19_2_S1UL19_2_VFD17.5HP280 FPMUL19_2_TPE2
|
||||
UL19_3_VFD12HP280 FPMUL19_3_ENC1
|
||||
UL19_4_TPE1
|
||||
UL19_4_TPE2
|
||||
UL19_4_ENC1UL19_4_VFD12HP280 FPMUL19_5_ENC1UL19_6_ENC1UL19_7_ENC1UL19_8_ENC1UL19_5_TPE1UL19_6_TPE1UL19_7_TPE1UL19_8_TPE1UL19_9_VFD12HP420 FPMUL19_8_VFD13HP420 FPM
|
||||
UL19_7_VFD13HP420 FPMUL19_6_VFD13HP420 FPMUL19_5_VFD13HP420 FPM
|
||||
UL20_4_ENC1EPCUL20_4_EPC2
|
||||
EPCUL20_4_EPC1
|
||||
RBBGUL20_4_S2
|
||||
RBBGUL20_4_S1UL20_4_VFD15HP280 FPMUL20_44_TPE1
|
||||
UL20_5_VFD12HP280 FPMUL20_5_ENC1
|
||||
UL20_6_TPE1UL20_6_ENC1
|
||||
UL20_11_VFD12HP420 FPMUL20_10_VFD13HP420 FPMUL20_9_VFD13HP420 FPM
|
||||
UL20_7_VFD13HP420 FPMUL20_8_VFD13HP420 FPM
|
||||
UL20_6_VFD13HP420 FPM
|
||||
UL20_6_TPE2UL20_7_TPE1UL20_8_TPE1UL20_9_TPE1UL20_10_TPE1
|
||||
UL20_7_ENC1UL20_8_ENC1UL20_9_ENC1UL20_10_ENC1
|
||||
UL21_4_ENC1EPCUL21_4_EPC2
|
||||
EPCUL21_4_EPC1
|
||||
RBBGUL21_4_S2
|
||||
RBBGUL21_4_S1UL21_4_VFD15HP280 FPMUL21_4_TPE1UL21_6_TPE1
|
||||
UL21_5_VFD15HP280 FPM
|
||||
UL21_5_ENC1UL21_6_ENC1UL21_7_ENC1UL21_8_ENC1UL21_9_ENC1UL21_10_ENC1
|
||||
UL21_6_TPE2UL21_7_TPE1UL21_8_TPE1UL21_9_TPE1UL21_10_TPE1UL21_11_TPE1
|
||||
UL21_6_VFD13HP300 FPMUL21_7_VFD13HP300 FPMUL21_8_VFD13HP300 FPMUL21_9_VFD13HP300 FPMUL21_10_VFD13HP300 FPM
|
||||
WUL21_11_JR2
|
||||
UL21_11_VFD17.5HP280 FPM
|
||||
UL21_11_TPE5
|
||||
UL21_12_VFD15HP280 FPM UL21_13_VFD12HP280 FPMUL21_14A_VFD13HP280 FPMUL21_14B_VFD13HP280 FPMUL21_15_VFD12HP280 FPM
|
||||
UL21_16_VFD12HP280 FPM
|
||||
UL21_17_VFD15HP280 FPMPS6_2_JPE1PS6_2_TPE1
|
||||
PS6_3_VFD12HP300 FPM
|
||||
PS6_4_TPE2
|
||||
PS6_4_VFD13HP300 FPM PS6_6_VFD15HP300 FPM
|
||||
PS6_5_JPE1
|
||||
PS6_7_TPE1BBA
|
||||
WPS6_6_JR1
|
||||
PS6_8_VFD15HP300 FPMPS6_10_TPE1
|
||||
PS6_10_JPE1PS6_12_TPE1
|
||||
RGPS6_13_SS1
|
||||
PS7_2_TPE1PS7_2_JPE1PS7_4_TPE1PS7_4_TPE2 PS7_5_TPE1 PS7_6_TPE1 PS7_7_TPE1 PS7_8_TPE1 PS7_9_TPE1PS7_10_JPE1BBA
|
||||
WPS7_11_JR1
|
||||
PS7_11_VFD13HP300 FPM
|
||||
PS7_12_TPE1
|
||||
PS7_12_VFD13HP300 FPM
|
||||
PS7_12_JPE1PS7_13_VFD13HP300 FPMPS7_14_TPE1
|
||||
RGPS7_14_SS1PS7_14_FIO1
|
||||
BBA
|
||||
MCM02
|
||||
181
projects/MTN6/extracted_texts/MTN6_SYSDL-MCM03.txt
Normal file
181
projects/MTN6/extracted_texts/MTN6_SYSDL-MCM03.txt
Normal file
@ -0,0 +1,181 @@
|
||||
ST 1.5kW 1.4375
|
||||
ST 1.5kW 1.4375
|
||||
ST 1.5kW 1.4375
|
||||
ST 1.5kW 1.4375
|
||||
UL1_14_VFD13HP420 FPMUL1_15_VFD13HP420 FPMUL1_16_VFD13HP420 FPMUL1_17_VFD13HP420 FPM
|
||||
UL1_18_VFD15HP420 FPM
|
||||
UL1_19_VFD13HP420 FPM
|
||||
UL1_20_VFD12HP420 FPM
|
||||
UL1_18_ENC1
|
||||
UL1_14_TPE1
|
||||
UL1_15_TPE1
|
||||
UL1_16_TPE1
|
||||
UL1_17_TPE1
|
||||
UL1_19_TPE2UL1_19_TPE1EPCUL1_14_EPC1
|
||||
EPCUL1_14_EPC2
|
||||
BBGUL1_14_S1RA
|
||||
UL7_14_VFD13HP420 FPMUL7_15_VFD13HP420 FPMUL7_16_VFD13HP420 FPM
|
||||
UL7_17_VFD13HP420 FPM
|
||||
UL7_18_VFD15HP420 FPM
|
||||
UL7_19_VFD13HP420 FPM
|
||||
UL7_20_VFD13HP420 FPM
|
||||
UL11_15_VFD13HP420 FPMUL11_16_VFD13HP420 FPMUL11_17_VFD13HP420 FPMUL11_18_VFD13HP420 FPM
|
||||
UL11_19_VFD15HP420 FPM
|
||||
UL11_20_VFD13HP420 FPM
|
||||
UL11_21_VFD13HP420 FPM
|
||||
EPCUL7_14_EPC1
|
||||
EPCUL7_14_EPC2
|
||||
EPCUL11_15_EPC1
|
||||
EPCXXXX_EPC1
|
||||
RBBGUL7_14_S2
|
||||
BBGUL11_15_S1RA
|
||||
RBBGUL1_14_S2A
|
||||
RBBGUL11_15_S2
|
||||
RBBGUL7_14_S1
|
||||
A
|
||||
NCP1_1_VFD7.5HP300 FPM
|
||||
NCP1_2_VFD17.5HP300 FPM
|
||||
NCP1_3_VFD17.5HP300 FPM
|
||||
NCP1_4_VFD15HP300 FPM
|
||||
NCP1_5_VFD17.5HP350 FPM NCP1_6_VFD15HP350 FPM NCP1_7_VFD17.5HP350 FPM NCP1_8_VFD17.5HP350 FPM
|
||||
NCP_005_ENW1
|
||||
EPCNCP1_1_EPC1RBB
|
||||
EPCNCP1_1_EPC2
|
||||
RBBA
|
||||
A
|
||||
EPCNCP1_2_EPC1
|
||||
RBB
|
||||
EPCNCP1_2_EPC2
|
||||
RBB
|
||||
A
|
||||
EPCNCP1_3_EPC1RBB
|
||||
EPCNCP1_3_EPC2
|
||||
RBB
|
||||
WNCP1_3_JR3ABB
|
||||
EPCNCP1_8_EPC1
|
||||
EPCNCP1_8_EPC2
|
||||
V
|
||||
GNCP1_1_S2
|
||||
GNCP1_1_S1
|
||||
GNCP1_2_S2GNCP1_2_S1
|
||||
GNCP1_3_S2GNCP1_3_S1
|
||||
NCP1_1_ENC1
|
||||
NCP1_2_ENC1
|
||||
NCP1_3_ENC1
|
||||
NCP1_1_TPE1
|
||||
NCP1_5_TPE1 NCP1_5_TPE2NCP1_6_TPE1
|
||||
UL13_DPM2MCM03
|
||||
UL1_DPM2MCM03
|
||||
UL7_DPM2MCM03
|
||||
MCM03
|
||||
NCP_DPM1MCM03
|
||||
UL4_14_VFD12HP420 FPMUL4_15_VFD13HP420 FPMUL4_16_VFD13HP420 FPMUL4_17_VFD13HP420 FPM
|
||||
UL4_18_VFD15HP420 FPM
|
||||
UL4_19_VFD13HP420 FPM
|
||||
UL4_20_VFD12HP420 FPM
|
||||
UL4_18_ENC1
|
||||
UL4_14_TPE1
|
||||
UL4_15_TPE1
|
||||
UL4_16_TPE1
|
||||
UL4_17_TPE1
|
||||
UL4_19_TPE2UL4_19_TPE1BBGUL4_14_S1RA
|
||||
RBBGUL4_14_S2A
|
||||
ST 1.5kW 1.4375
|
||||
ST 1.5kW 1.4375
|
||||
ST 1.5kW 1.4375
|
||||
UL13_13_TPE1
|
||||
UL13_13_ENC1
|
||||
EPCUL21_18_EPC1
|
||||
EPCUL21_18_EPC2
|
||||
EPCUL18_17_EPC1
|
||||
EPCUL18_17_EPC2
|
||||
EPCUL13_13_EPC1
|
||||
EPCUL13_13_EPC2
|
||||
RBBGUL21_18_S2
|
||||
RBBGUL18_17_S2
|
||||
RBBGUL13_13_S2
|
||||
A
|
||||
A
|
||||
RBBGUL18_17_S1
|
||||
RBBGUL21_18_S1
|
||||
ARBBGUL13_13_S1
|
||||
EPCUL4_14_EPC2
|
||||
EPCUL4_14_EPC1
|
||||
UL7_18_ENC1
|
||||
UL7_14_TPE1
|
||||
UL7_15_TPE1
|
||||
UL7_16_TPE1
|
||||
UL7_17_TPE1
|
||||
UL7_19_TPE2UL7_19_TPE1
|
||||
UL11_15_TPE1
|
||||
UL11_16_TPE1
|
||||
UL11_17_TPE1
|
||||
UL11_18_TPE1
|
||||
UL11_19_ENC1
|
||||
UL11_20_TPE2UL11_20_TPE1
|
||||
UL13_13_VFD13HP420 FPM
|
||||
UL1_14_ENC1UL1_15_ENC1UL1_16_ENC1UL1_17_ENC1
|
||||
UL1_19_ENC1
|
||||
UL4_14_ENC1UL4_15_ENC1UL4_16_ENC1UL4_17_ENC1
|
||||
UL4_19_ENC1
|
||||
UL7_14_ENC1UL7_15_ENC1UL7_16_ENC1UL7_17_ENC1
|
||||
UL7_19_ENC1
|
||||
UL11_15_ENC1UL11_16_ENC1UL11_17_ENC1UL11_18_ENC1
|
||||
UL11_20_ENC1
|
||||
UL13_14_VFD13HP420 FPMUL13_15_VFD13HP420 FPMUL13_16_VFD13HP420 FPMUL13_17_VFD15HP420 FPM
|
||||
UL13_18_VFD13HP420 FPM
|
||||
UL13_19_VFD12HP420 FPM
|
||||
UL13_14_TPE1
|
||||
UL13_15_TPE1
|
||||
UL13_16_TPE1
|
||||
UL13_18_TPE2
|
||||
UL13_18_TPE1UL13_18_ENC1
|
||||
UL13_14_ENC1UL13_15_ENC1UL13_16_ENC1
|
||||
UL13_17_ENC1
|
||||
UL18_17_TPE1
|
||||
UL18_17_ENC1UL18_17_VFD13HP420 FPMUL18_18_VFD13HP420 FPMUL18_19_VFD13HP420 FPMUL18_20_VFD13HP420 FPMUL18_21_VFD15HP420 FPM
|
||||
UL18_18_TPE1
|
||||
UL18_19_TPE1
|
||||
UL18_20_TPE1
|
||||
UL18_18_ENC1UL18_19_ENC1UL18_20_ENC1
|
||||
UL18_21_ENC1
|
||||
UL18_22_VFD13HP420 FPM
|
||||
UL18_23_VFD12HP420 FPMUL18_22_TPE2
|
||||
UL18_22_TPE1UL18_22_ENC1
|
||||
UL21_18_TPE1
|
||||
UL21_18_ENC1
|
||||
UL21_18_VFD13HP420 FPMUL21_19_VFD13HP420 FPMUL21_20_VFD13HP420 FPMUL21_21_VFD13HP420 FPMUL21_22_VFD15HP420 FPM
|
||||
UL21_19_TPE1
|
||||
UL21_20_TPE1
|
||||
UL21_21_TPE1
|
||||
UL21_19_ENC1UL21_20_ENC1UL21_21_ENC1
|
||||
UL21_22_ENC1
|
||||
UL21_23_VFD13HP420 FPM
|
||||
UL21_24_VFD12HP420 FPMUL21_23_TPE2
|
||||
UL21_23_TPE1UL21_23_ENC1
|
||||
NCP1_1_TPE2
|
||||
NCP1_1_TPE3
|
||||
NCP1_1_TPE4
|
||||
WNCP1_1_JR1BBA
|
||||
NCP1_1_TPE5
|
||||
NCP1_2_TPE1
|
||||
NCP1_2_TPE2
|
||||
NCP1_2_TPE3
|
||||
NCP1_2_TPE4
|
||||
WNCP1_2_JR1BBA
|
||||
NCP1_2_TPE5
|
||||
WNCP1_3_JR1BBA
|
||||
WNCP1_3_JR2BBA
|
||||
NCP1_3_TPE1
|
||||
NCP1_3_TPE2
|
||||
NCP1_3_TPE3
|
||||
NCP1_3_TPE4
|
||||
NCP1_3_TPE5
|
||||
NCP1_3_TPE6
|
||||
NCP1_3_TPE7
|
||||
NCP1_7_TPE1 RBB
|
||||
RBB
|
||||
GNCP1_8_S1
|
||||
GNCP1_8_S2
|
||||
NCP1_8_TPE1NCP1_8_FIO1
|
||||
MCM03
|
||||
587
projects/MTN6/extracted_texts/MTN6_SYSDL-MCM04.txt
Normal file
587
projects/MTN6/extracted_texts/MTN6_SYSDL-MCM04.txt
Normal file
@ -0,0 +1,587 @@
|
||||
2'-1.5" EL
|
||||
2'-3" EL
|
||||
TRASH
|
||||
PALLETSTAGINGAREA
|
||||
PROBLEM SOLV.CART 80/20
|
||||
PROB. SOLV. CART
|
||||
TRASH
|
||||
TRASH
|
||||
PALLETSTAGINGAREA
|
||||
PROBLEM SOLV.CART 80/20
|
||||
PROB. SOLV. CART
|
||||
TRASH
|
||||
TRASH
|
||||
PALLETSTAGINGAREA
|
||||
PROBLEM SOLV.CART 80/20
|
||||
PROB. SOLV. CART
|
||||
TRASH
|
||||
TRASH
|
||||
PALLETSTAGINGAREA
|
||||
PROBLEM SOLV.CART 80/20
|
||||
PROB. SOLV. CART
|
||||
TRASH
|
||||
TRASH
|
||||
PALLETSTAGINGAREA
|
||||
PROBLEM SOLV.CART 80/20
|
||||
PROB. SOLV. CART
|
||||
TRASH
|
||||
TRASH
|
||||
PALLETSTAGINGAREA
|
||||
PROBLEM SOLV.CART 80/20
|
||||
PROB. SOLV. CART
|
||||
TRASH
|
||||
TRASH
|
||||
PALLETSTAGINGAREA
|
||||
PROBLEM SOLV.CART 80/20
|
||||
PROB. SOLV. CART
|
||||
TRASH
|
||||
TRASH
|
||||
PALLETSTAGINGAREA
|
||||
PROBLEM SOLV.CART 80/20
|
||||
PROB. SOLV. CART
|
||||
TRASH
|
||||
TRASH
|
||||
PALLETSTAGINGAREA
|
||||
PROBLEM SOLV.CART 80/20
|
||||
PROB. SOLV. CART
|
||||
TRASH
|
||||
TRASH
|
||||
PALLETSTAGINGAREA
|
||||
PROBLEM SOLV.CART 80/20
|
||||
PROB. SOLV. CART
|
||||
TRASH
|
||||
ERSCERSCERSCERSCERSCERSCERSCERSCERSCERSCERSCERSCERSCERSCERSC MDR POWER SUPPLY80AMDR POWER SUPPLY80A
|
||||
V
|
||||
11'-2" EL
|
||||
1'-4" EL
|
||||
FL_DPM1MCM04
|
||||
FL_DPM2MCM04
|
||||
ULGLB_DPM1MCM04
|
||||
ULGLC_DPM1MCM04
|
||||
MCM04
|
||||
PRS1_DPM1MCM04
|
||||
CH_DPM2MCM04
|
||||
FL1038_2_PE1ABBB
|
||||
FL1038_1CH_PE1
|
||||
FL1038_2_PE2
|
||||
FL1038_2_VFD15HP350FPM
|
||||
FL1038_3CH_PE1BBBWFL1038_2_JR2WFL1038_2_JR1
|
||||
WFL1038_1_JR1
|
||||
ULC8_3_VFD12HP80FPMULC7_3_VFD12HP80FPMULC6_3_VFD12HP80FPMULC5_3_VFD12HP80FPM
|
||||
PS10_1_VFD15HP150FPMPS10_2_VFD115HP200FPM
|
||||
PS10_5_VFD115HP240FPM
|
||||
PS11_1_VFD15HP150FPMPS11_2_VFD15HP200FPMPS11_3_VFD110HP240FPM
|
||||
PS11_4_VFD110HP240FPM
|
||||
PS11_6_VFD110HP240FPM PS11_7_VFD120HP240FPM PS11_8_VFD115HP240FPM PS11_9_VFD115HP240FPM
|
||||
PS11_11_VFD115HP240FPMULC8_3_JPE2ULC7_3_JPE2ULC6_3_JPE2ULC5_3_JPE2
|
||||
PS10_1_JPE2
|
||||
PS10_1_JPE1PS10_1_JPE3PS11_1_JPE1
|
||||
PS11_1_JPE2
|
||||
PS11_1_JPE3PS10_3_JPE1 PS11_2_JPE1
|
||||
PS10_5CH2_FPE1PS10_5CH2_JPE1
|
||||
PS10_5CH5_FPE2
|
||||
PS10_6CH_FPE1
|
||||
PS10_5_JPE4
|
||||
PS10_5_JPE5
|
||||
PS10_5_JPE3
|
||||
PS10_5_JPE2
|
||||
PS10_5_JPE1
|
||||
PS11_3_JPE2
|
||||
PS11_4_JPE1
|
||||
PS11_11_JPE1
|
||||
PS11_11_JPE2
|
||||
PS11_11_JPE3
|
||||
PS11_11_JPE4
|
||||
PS11_11_JPE5
|
||||
PS11_11CH1_JPE1
|
||||
EPCULC5_3_EPC1
|
||||
EPCULC5_3_EPC2
|
||||
EPCULC6_3_EPC1
|
||||
EPCULC7_3_EPC1
|
||||
EPCULC7_3_EPC2
|
||||
EPCULC8_3_EPC1
|
||||
EPCPS10_1_EPC1EPCPS11_1_EPC1
|
||||
EPCPS10_5_EPC1
|
||||
EPCPS11_11_EPC1
|
||||
WPS10_1_JR1
|
||||
WULC8_3_JR1
|
||||
WULC7_3_JR1
|
||||
WULC6_3_JR1
|
||||
WULC5_3_JR1W
|
||||
PS11_1_JR2
|
||||
PS11_9_JPE1
|
||||
WPS11_11_JR1
|
||||
WPS11_11_JR2
|
||||
WPS10_5_JR1
|
||||
WPS10_5_JR2ABB
|
||||
ABB
|
||||
ABBR
|
||||
GPS10_3_JR1
|
||||
GPS11_11_S1
|
||||
RABB RABB RABB RABB
|
||||
ABBABBR ABBR
|
||||
ABBR
|
||||
ABB
|
||||
ABB
|
||||
PS11_1_FIO1PS10_1_FIO2
|
||||
PS10_5_FIO1
|
||||
PS10_5_FIO3
|
||||
PS11_11_FIO1
|
||||
PS10_5DIV1_LS1LSPS10_5DIV1_LS2LS
|
||||
PS10_5DIV2_LS1LSPS10_5DIV2_LS2LS
|
||||
PS10_5DIV3_LS1LSPS10_5DIV3_LS2LS
|
||||
PS10_5DIV5_LS1LSPS10_5DIV5_LS2LS
|
||||
PS11_11DIV1_LS1LSPS11_11DIV1_LS2LS
|
||||
PS11_11DIV2_LS1LSPS11_11DIV2_LS2LS
|
||||
PS11_11DIV3_LS1LSPS11_11DIV3_LS2LS
|
||||
PS11_11DIV4_LS1LSPS11_11DIV4_LS2LS
|
||||
PS11_11DIV5_LS1LSPS11_11DIV5_LS2LS
|
||||
PS11_11DIV6_LS1LSPS11_11DIV6_LS2LS
|
||||
SOLPS10_5DIV5_SOL1SOLPS10_5DIV5_SOL2
|
||||
SOLPS10_5DIV3_SOL1SOLPS10_5DIV3_SOL2
|
||||
SOLPS10_5DIV2_SOL1SOLPS10_5DIV2_SOL2SOLPS10_5DIV1_SOL1SOLPS10_5DIV1_SOL2
|
||||
SOLPS11_11DIV1_SOL1SOLPS11_11DIV1_SOL2
|
||||
SOLPS11_11DIV2_SOL1SOLPS11_11DIV2_SOL2
|
||||
SOLPS11_11DIV3_SOL1SOLPS11_11DIV3_SOL2
|
||||
SOLPS11_11DIV4_SOL1SOLPS11_11DIV4_SOL2
|
||||
SOLPS11_11DIV5_SOL1SOLPS11_11DIV5_SOL2
|
||||
SOLPS11_11DIV6_SOL1SOLPS11_11DIV6_SOL2
|
||||
PS10_5CH2_FPE2PS10_5CH1_JPE1PS10_5CH1_FPE1PS10_5CH1_FPE2
|
||||
PS10_5CH5_FPE1PS10_5CH5_JPE1
|
||||
PS10_1_JPE4
|
||||
PS11_11CH1_FPE1PS11_11CH1_FPE2PS11_11CH2_JPE1
|
||||
PS11_12CH_FPE1ULC8_3_JPE1ULC7_3_JPE1ULC6_3_JPE1
|
||||
ULC5_3_JPE1
|
||||
PS11_1_JPE4
|
||||
PRS3_2B_VFD12HP120 FPMPRS3_3B_VFD13HP120 FPM
|
||||
PRS3_2A_VFD12HP120 FPMPRS3_3A_VFD12HP120 FPM
|
||||
PRS3_5_VFD12HP120 FPM
|
||||
ERSCPRS3_6_ERSC1ERSCPRS3_6_ERSC2ERSCPRS3_6_ERSC3ERSCPRS3_6_ERSC4ERSCPRS3_6_ERSC5ERSCPRS3_6_ERSC6ERSCPRS3_6_ERSC7ERSCPRS3_6_ERSC8ERSCPRS3_6_ERSC9ERSCPRS3_6_ERSC10ERSCPRS3_6_ERSC11ERSCPRS3_6_ERSC12ERSCPRS3_6_ERSC13ERSCPRS3_6_ERSC14ERSCPRS3_6_ERSC15 MDR POWER SUPPLYPRS3_6_PSU140AMDR POWER SUPPLYPRS3_6_PSU240A
|
||||
PRS3_6_PE1PRS3_6_PE2PRS3_6_PE3PRS3_6_PE4PRS3_6_PE5PRS3_6_PE6PRS3_6_PE7PRS3_6_PE8PRS3_6_PE9PRS3_6_PE10PRS3_6_PE11PRS3_6_PE12PRS3_6_PE13PRS3_6_PE14PRS3_6_PE15PRS3_6_PE16PRS3_6_PE17PRS3_6_PE18PRS3_6_PE19PRS3_6_PE20PRS3_6_PE21PRS3_6_PE22PRS3_6_PE23PRS3_6_PE24PRS3_6_PE25PRS3_6_PE26PRS3_6_PE27PRS3_6_PE28PRS3_6_PE29PRS3_6_PE30
|
||||
PRS3_2B_JPE1 PRS3_2A_JPE1
|
||||
PRS3_1BCH_JPE1 PRS3_1ACH_JPE1
|
||||
PRS3_5_JPE1
|
||||
PRS3_3B_JPE1PRS3_3B_JPE2PRS3_3A_JPE2 PRS3_3A_JPE1
|
||||
PRS3_5_JPE2
|
||||
PRS4_1_JPE1PRS4_2_JPE1 EPCPRS3_5_EPC1
|
||||
EPCPRS3_5_EPC2
|
||||
EPCPRS4_1_EPC2
|
||||
EPCPRS4_1_EPC1
|
||||
EPCPRS4_2_EPC1
|
||||
EPCPRS4_2_EPC2
|
||||
GPRS4_2_S2ABBRGPRS4_1_S2GPRS4_1_S1
|
||||
GPRS4_2_S1
|
||||
GPRS3_5_S1GPRS3_5_S2
|
||||
BBR
|
||||
BBR
|
||||
ABBR BBR
|
||||
ABB ABB
|
||||
WPRS3_3B_JR1
|
||||
WPRS3_3A_JR1WPRS3_2B_JR1
|
||||
WPRS3_1BCH_JR1 WPRS3_1ACH_JR1
|
||||
WPRS3_2A_JR1
|
||||
ABB
|
||||
ABB
|
||||
ABB
|
||||
ABB
|
||||
BABB
|
||||
PRS3_4CH_FPE1
|
||||
PRS3_4CH_FPE2B B
|
||||
BB
|
||||
GBBAB
|
||||
GBBABGBBAB
|
||||
GBBABGBBAB
|
||||
GBBAB
|
||||
GPS11_11CH1_S1
|
||||
GPS11_11CH2_S1
|
||||
GPS11_11CH3_S1
|
||||
GPS11_11CH4_S1
|
||||
GPS11_11CH5_S1
|
||||
GPS11_11CH6_S1
|
||||
GPS10_5CH2_S1
|
||||
GPS10_5CH1_S1
|
||||
GPS10_5CH5_S1
|
||||
GPS10_5CH3_S1
|
||||
GBBAB
|
||||
GBBAB
|
||||
GBBAB
|
||||
GBBAB
|
||||
PS10_1_ENC1PS10_2_ENC1
|
||||
PS10_5_ENC1
|
||||
PS11_3_ENC1
|
||||
PS11_6_ENC1 PS11_7_ENC1 PS11_8_ENC1 PS11_9_ENC1
|
||||
PS11_11_ENC1
|
||||
EPCPS11_7_EPC2
|
||||
EPCPS11_7_EPC1
|
||||
BBR
|
||||
BBR
|
||||
G
|
||||
PS11_7_S2
|
||||
GPS11_7_S1
|
||||
ULC8_3_ENC1ULC7_3_ENC1ULC6_3_ENC1ULC5_3_ENC1
|
||||
PRS4_2_ENC1
|
||||
PRS4_1_ENC1
|
||||
PS10_5_PS1PS
|
||||
PS11_11_PS1PS
|
||||
PS10_5CH3_JPE1PS10_5CH3_FPE1PS10_5CH3_FPE2
|
||||
PS11_11CH2_FPE1PS11_11CH2_FPE2
|
||||
EPCPS11_8_EPC1BBR
|
||||
G
|
||||
PRS4_2_JPE2PS11_3_JPE1
|
||||
EPCPS11_4_EPC2
|
||||
EPCPS11_4_EPC1EPCPS11_3_EPC1
|
||||
EPCPS11_3_EPC2
|
||||
ABBR
|
||||
BBR
|
||||
BBR
|
||||
GPS11_3_S1ABBR
|
||||
GPS11_3_S2
|
||||
PS11_2_ENC1PS10_3_VFD115HP240FPMPS10_3_ENC1 PS11_1_ENC1
|
||||
PS11_4_ENC1
|
||||
PS11_11_JPE6WPS11_11_JR3ABB
|
||||
PRS4_1_VFD17.5HP120FPM
|
||||
PRS4_2_VFD15HP120FPM
|
||||
RGULC5_3_SS1RGULC5_3_SS2
|
||||
PS11_1_FIO2
|
||||
RGULC6_3_SS2
|
||||
PS10_1_FIO1
|
||||
RGPS10_1_SS1
|
||||
PS10_2_TPE
|
||||
PS10_5_FIO2
|
||||
PS10_5_FIO4PS10_5_FIO5
|
||||
WPS11_1_JR1
|
||||
PS11_3_FIO1
|
||||
GPS11_4_S2
|
||||
GPS11_4_S1
|
||||
PS11_4_FIO1
|
||||
PS11_7_FIO1
|
||||
PS11_11_FIO2
|
||||
PS11_11_FIO3
|
||||
PS11_11_FIO4
|
||||
PS11_11_FIO5
|
||||
PS11_11_FIO6
|
||||
PRS3_2B_FIO1 PRS3_2A_FIOM1
|
||||
PRS3_4CH_FIO1
|
||||
PRS4_2_FIO1
|
||||
WPRS4_2_JR1
|
||||
RGULC7_3_SS1
|
||||
RGULC7_3_SS2RGULC8_3_SS1
|
||||
PS10_5_TPE1
|
||||
PS11_6_TPE1
|
||||
PS11_6_TPE2
|
||||
PS11_7_TPE1
|
||||
PS11_8_TPE1 PS11_11_TPE1
|
||||
PS11_11CH3_JPE1PS11_11CH3_FPE1PS11_11CH3_FPE2PS11_11CH4_JPE1PS11_11CH4_FPE1PS11_11CH4_FPE2
|
||||
PS11_11CH5_JPE1PS11_11CH5_FPE1PS11_11CH5_FPE2PS11_11CH6_JPE1PS11_11CH6_FPE1PS11_11CH6_FPE2
|
||||
GDTC_NCH1_EN1
|
||||
CH_DPM1_FIOM1
|
||||
GDTC_NCH2_EN1
|
||||
GDTC_NCH3_EN1
|
||||
GDTC_NCH4_EN1CH_DPM1MCM04
|
||||
GDTC_NCH5_EN1
|
||||
CH_DPM1_FIOM2
|
||||
GDTC_NCH6_EN1
|
||||
GDTC_NCH7_EN1
|
||||
GDTC_NCH8_EN1
|
||||
GDTC_NCH9_EN1
|
||||
CH_DPM1_FIOM3
|
||||
GDTC_NCH10_EN1
|
||||
GDTC_NCH11_EN1
|
||||
GDTC_NCH12_EN1
|
||||
GDTC_NCH13_EN1
|
||||
CH_DPM1_FIOM4
|
||||
GDTC_NCH14_EN1
|
||||
GDTC_NCH15_EN1
|
||||
GDTC_NCH16_EN1
|
||||
CH_DPM1_FIOM5
|
||||
GDTC_NCH17_EN1
|
||||
FL1034_2_PE1ABBBFL1034_1CH_PE1
|
||||
FL1034_2_PE2
|
||||
FL1034_2_VFD15HP350FPM
|
||||
FL1034_3CH_PE1BBBWFL1034_2_JR2WFL1034_2_JR1
|
||||
WFL1034_1_JR1FL1026_2_PE1ABBB
|
||||
FL1026_1CH_PE1
|
||||
FL1026_2_PE2FL1026_3CH_PE1BBBWFL1026_2_JR2WFL1026_2_JR1
|
||||
WFL1026_1_JR1FL1022_2_PE1
|
||||
ABBB
|
||||
FL1022_1CH_PE1
|
||||
FL1022_2_PE2FL1022_3CH_PE1BBBWFL1022_2_JR2WFL1022_2_JR1
|
||||
WFL1022_1_JR1FL1018_2_PE1ABBB
|
||||
FL1018_1CH_PE1
|
||||
FL1018_2_PE2FL1018_3CH_PE1BBBWFL1018_2_JR2WFL1018_2_JR1
|
||||
WFL1018_1_JR1
|
||||
FL1014_2_PE1ABBB
|
||||
FL1014_1CH_PE1
|
||||
FL1014_2_PE2FL1014_3CH_PE1BBBWFL1014_2_JR2WFL1014_2_JR1
|
||||
WFL1014_1_JR1 FL3012_2_PE1
|
||||
ABBB
|
||||
FL3012_1CH_PE1
|
||||
FL3012_2_PE2FL3012_3CH_PE1BBBWFL3012_2_JR2WFL3012_2_JR1
|
||||
WFL3012_1_JR1FL3016_2_PE1
|
||||
ABBB
|
||||
FL3016_1CH_PE1
|
||||
FL3016_2_PE2FL3016_3CH_PE1BBBWFL3016_2_JR2WFL3016_2_JR1
|
||||
WFL3016_1_JR1FL3020_2_PE1
|
||||
ABBB
|
||||
FL3020_1CH_PE1
|
||||
FL3020_2_PE2FL3020_3CH_PE1BBBWFL3020_2_JR2WFL3020_2_JR1
|
||||
WFL3020_1_JR1FL3024_2_PE1
|
||||
ABBB
|
||||
FL3024_1CH_PE1
|
||||
FL3024_2_PE2FL3024_3CH_PE1BBBWFL3024_2_JR2WFL3024_2_JR1
|
||||
WFL3024_1_JR1
|
||||
FL1026_2_VFD15HP350FPMFL1022_2_VFD15HP350FPMFL1018_2_VFD15HP350FPMFL1014_2_VFD15HP350FPM FL3012_2_VFD15HP350FPMFL3016_2_VFD15HP350FPMFL3020_2_VFD15HP350FPMFL3024_2_VFD15HP350FPM
|
||||
CH_DPM2_FIOM2CH_DPM2_FIOM1
|
||||
CH_DPM2_FIOM4CH_DPM2_FIOM3CH_DPM2_FIOM6CH_DPM2_FIOM5
|
||||
BBGABBBGBBBGBBBGB BBGBBBGBBBGB BBGBBBGBBBGB BBGBBBGB BBGBBBGAB BBGAB BBGAB BBGAB
|
||||
BBGAB BBGAB BBGAB BBGAB BBGAB BBGAB BBGAB
|
||||
CH_DPM3MCM04 CH_DPM4MCM04 CH_DPM5MCM04 CH_DPM6MCM04
|
||||
PB_NCH1_FIOH1PB_NCH3_FIOH1PB_NCH5_FIOH1PB_NCH7_FIOH1PB_NCH9_FIOH1PB_NCH10_FIOH1PB_NCH11_FIOH1PB_NCH12_FIOH1PB_NCH13_FIOH1PB_NCH14_FIOH1PB_NCH15_FIOH1PB_NCH16_FIOH1PB_NCH18_FIOH1PB_NCH20_FIOH1
|
||||
CH_DPM3_FIOM2CH_DPM3_FIOM1CH_DPM3_FIOM4CH_DPM3_FIOM3CH_DPM3_FIOM6CH_DPM3_FIOM5CH_DPM3_FIOM8CH_DPM3_FIOM7
|
||||
PB_NCH21_FIOH1PB_NCH24_FIOH1PB_NCH25_FIOH1PB_NCH26_FIOH1PB_NCH27_FIOH1PB_NCH28_FIOH1PB_NCH29_FIOH1PB_NCH31_FIOH1PB_NCH33_FIOH1PB_NCH35_FIOH1PB_NCH37_FIOH1PB_NCH39_FIOH1PB_NCH41_FIOH1PB_NCH43_FIOH1PB_NCH45_FIOH1PB_NCH46_FIOH1PB_NCH48_FIOH1PB_NCH50_FIOH1PB_NCH52_FIOH1PB_NCH54_FIOH1PB_NCH56_FIOH1PB_NCH58_FIOH1PB_NCH60_FIOH1
|
||||
CH_DPM4_FIOM1CH_DPM4_FIOM3CH_DPM4_FIOM2CH_DPM4_FIOM5CH_DPM4_FIOM4CH_DPM4_FIOM7CH_DPM4_FIOM6CH_DPM5_FIOM2CH_DPM5_FIOM1CH_DPM5_FIOM4CH_DPM5_FIOM3CH_DPM5_FIOM6CH_DPM5_FIOM5CH_DPM5_FIOM8CH_DPM5_FIOM7CH_DPM6_FIOM2CH_DPM6_FIOM1CH_DPM6_FIOM4CH_DPM6_FIOM3CH_DPM6_FIOM6CH_DPM6_FIOM5CH_DPM6_FIOM8CH_DPM6_FIOM7
|
||||
BBGAB BBGAB BBGAB BBGAB BBGAB BBGAB BBGAB BBGAB BBGAB BBGAB BBGABBBGBBBGBBBGB BBGBBBGBBBGB BBGB BBGB BBGB BBGB BBGB BBGBBBGBBBGB BBGB BBGBBBGB BBGB BBGB BBGB BBGB BBGB BBGB BBGBBBGB BBGBBBGBBBGB BBGBBBGB BBGB BBGBBBGB BBGBBBGB BBGBBBGBBBGB BBGBBBGB BBGB
|
||||
GDTC_NCH18_EN1
|
||||
GDTC_NCH19_EN1
|
||||
GDTC_NCH20_EN1
|
||||
GDTC_NCH21_EN1
|
||||
GDTC_NCH22_EN1
|
||||
GDTC_NCH23_EN1
|
||||
GDTC_NCH24_EN1
|
||||
GDTC_NCH25_EN1
|
||||
GDTC_NCH26_EN1
|
||||
GDTC_NCH27_EN1
|
||||
GDTC_NCH28_EN1
|
||||
GDTC_NCH29_EN1
|
||||
GDTC_NCH30_EN1
|
||||
GDTC_NCH31_EN1
|
||||
GDTC_NCH32_EN1
|
||||
GDTC_NCH33_EN1
|
||||
GDTC_NCH34_EN1
|
||||
GDTC_NCH35_EN1
|
||||
GDTC_NCH36_EN1
|
||||
GDTC_NCH37_EN1
|
||||
GDTC_NCH38_EN1
|
||||
GDTC_NCH39_EN1
|
||||
GDTC_CH40_EN1
|
||||
GDTC_CH41_EN1
|
||||
GDTC_CH42_EN1
|
||||
GDTC_CH43_EN1
|
||||
GDTC_CH44_EN1
|
||||
GDTC_CH45_EN1
|
||||
GDTC_CH46_EN1
|
||||
GDTC_CH47_EN1
|
||||
GDTC_CH48_EN1
|
||||
GDTC_CH49_EN1
|
||||
GDTC_CH50_EN1
|
||||
GDTC_NCH51_EN1
|
||||
GDTC_NCH52_EN1
|
||||
GDTC_NCH53_EN1
|
||||
GDTC_NCH54_EN1
|
||||
GDTC_NCH55_EN1
|
||||
GDTC_NCH56_EN1
|
||||
GDTC_NCH57_EN1
|
||||
GDTC_NCH58_EN1
|
||||
GDTC_NCH59_EN1
|
||||
GDTC_NCH60_EN1
|
||||
GDTC_NCH61_EN1
|
||||
GDTC_NCH62_EN1
|
||||
GDTC_NCH63_EN1
|
||||
GDTC_NCH64_EN1
|
||||
GDTC_NCH65_EN1
|
||||
GDTC_NCH66_EN1
|
||||
GDTC_NCH67_EN1
|
||||
GDTC_NCH68_EN1
|
||||
GDTC_NCH69_EN1
|
||||
GDTC_NCH70_EN1
|
||||
GDTC_NCH71_EN1
|
||||
GDTC_NCH72_EN1
|
||||
GDTC_NCH73_EN1
|
||||
GDTC_NCH74_EN1
|
||||
GDTC_NCH75_EN1
|
||||
GDTC_NCH76_EN1
|
||||
PB_NCH1_PE1
|
||||
PB_NCH1_PE2
|
||||
BBGABBBGB
|
||||
WPB_NCH1_PKGREL_PB1SOLPB_NCH1_PKGREL_SOL1
|
||||
PB_NCH2_PE1
|
||||
PB_NCH2_PE2
|
||||
WPB_NCH2_PKGREL_PB1SOLPB_NCH2_PKGREL_SOL1
|
||||
PB_NCH3_PE1
|
||||
PB_NCH3_PE2
|
||||
WPB_NCH3_PKGREL_PB1SOLPB_NCH3_PKGREL_SOL1
|
||||
PB_NCH4_PE1
|
||||
PB_NCH4_PE2
|
||||
WPB_NCH4_PKGREL_PB1SOLPB_NCH4_PKGREL_SOL1
|
||||
PB_NCH5_PE1
|
||||
PB_NCH5_PE2
|
||||
WPB_NCH5_PKGREL_PB1SOLPB_NCH5_PKGREL_SOL1
|
||||
PB_NCH6_PE1
|
||||
PB_NCH6_PE2
|
||||
WPB_NCH6_PKGREL_PB1SOLPB_NCH6_PKGREL_SOL1
|
||||
PB_NCH7_PE1
|
||||
PB_NCH7_PE2
|
||||
WPB_NCH7_PKGREL_PB1SOLPB_NCH7_PKGREL_SOL1
|
||||
PB_NCH8_PE1
|
||||
PB_NCH8_PE2
|
||||
WPB_NCH8_PKGREL_PB1SOLPB_NCH8_PKGREL_SOL1
|
||||
PB_NCH9_PE1
|
||||
PB_NCH9_PE2
|
||||
WPB_NCH9_PKGREL_PB1SOLPB_NCH9_PKGREL_SOL1
|
||||
PB_NCH10_PE1
|
||||
PB_NCH10_PE2
|
||||
WPB_NCH10_PKGREL_PB1SOLPB_NCH10_PKGREL_SOL1
|
||||
PB_NCH11_PE1
|
||||
PB_NCH11_PE2
|
||||
WPB_NCH11_PKGREL_PB1SOLPB_NCH11_PKGREL_SOL1
|
||||
PB_NCH12_PE1
|
||||
PB_NCH12_PE2
|
||||
WPB_NCH12_PKGREL_PB1SOLPB_NCH12_PKGREL_SOL1
|
||||
PB_NCH13_PE1
|
||||
PB_NCH13_PE2
|
||||
WPB_NCH13_PKGREL_PB1SOLPB_NCH13_PKGREL_SOL1
|
||||
PB_NCH14_PE1
|
||||
PB_NCH14_PE2
|
||||
WPB_NCH14_PKGREL_PB1SOLPB_NCH14_PKGREL_SOL1
|
||||
PB_NCH15_PE1
|
||||
PB_NCH15_PE2
|
||||
WPB_NCH15_PKGREL_PB1SOLPB_NCH15_PKGREL_SOL1
|
||||
PB_NCH16_PE1
|
||||
PB_NCH16_PE2
|
||||
WPB_NCH16_PKGREL_PB1SOLPB_NCH16_PKGREL_SOL1
|
||||
PB_NCH17_PE1
|
||||
PB_NCH17_PE2
|
||||
WPB_NCH17_PKGREL_PB1SOLPB_NCH17_PKGREL_SOL1
|
||||
PB_NCH18_PE1
|
||||
PB_NCH18_PE2
|
||||
WPB_NCH18_PKGREL_PB1SOLPB_NCH18_PKGREL_SOL1
|
||||
PB_NCH19_PE1
|
||||
PB_NCH19_PE2
|
||||
WPB_NCH19_PKGREL_PB1SOLPB_NCH19_PKGREL_SOL1
|
||||
PB_NCH20_PE1
|
||||
PB_NCH20_PE2
|
||||
WPB_NCH20_PKGREL_PB1SOLPB_NCH20_PKGREL_SOL1
|
||||
PB_NCH21_PE1
|
||||
PB_NCH21_PE2
|
||||
WPB_NCH21_PKGREL_PB1SOLPB_NCH21_PKGREL_SOL1
|
||||
PB_NCH22_PE1
|
||||
PB_NCH22_PE2
|
||||
WPB_NCH22_PKGREL_PB1SOLPB_NCH22_PKGREL_SOL1
|
||||
PB_NCH23_PE1
|
||||
PB_NCH23_PE2
|
||||
WPB_NCH23_PKGREL_PB1SOLPB_NCH23_PKGREL_SOL1
|
||||
PB_NCH24_PE1
|
||||
PB_NCH24_PE2
|
||||
WPB_NCH24_PKGREL_PB1SOLPB_NCH24_PKGREL_SOL1
|
||||
PB_NCH25_PE1
|
||||
PB_NCH25_PE2
|
||||
WPB_NCH25_PKGREL_PB1SOLPB_NCH25_PKGREL_SOL1
|
||||
PB_NCH26_PE1
|
||||
PB_NCH26_PE2
|
||||
WPB_NCH26_PKGREL_PB1SOLPB_NCH26_PKGREL_SOL1
|
||||
PB_NCH27_PE1
|
||||
PB_NCH27_PE2
|
||||
WPB_NCH27_PKGREL_PB1SOLPB_NCH27_PKGREL_SOL1
|
||||
PB_NCH28_PE1
|
||||
PB_NCH28_PE2
|
||||
WPB_NCH28_PKGREL_PB1SOLPB_NCH28_PKGREL_SOL1
|
||||
PB_NCH29_PE1
|
||||
PB_NCH29_PE2
|
||||
WPB_NCH29_PKGREL_PB1SOLPB_NCH29_PKGREL_SOL1
|
||||
PB_NCH30_PE1
|
||||
PB_NCH30_PE2
|
||||
WPB_NCH30_PKGREL_PB1SOLPB_NCH30_PKGREL_SOL1
|
||||
PB_NCH31_PE1
|
||||
PB_NCH31_PE2
|
||||
WPB_NCH31_PKGREL_PB1SOLPB_NCH31_PKGREL_SOL1
|
||||
PB_NCH32_PE1
|
||||
PB_NCH32_PE2
|
||||
WPB_NCH32_PKGREL_PB1SOLPB_NCH32_PKGREL_SOL1
|
||||
PB_NCH33_PE1
|
||||
PB_NCH33_PE2
|
||||
WPB_NCH33_PKGREL_PB1SOLPB_NCH33_PKGREL_SOL1
|
||||
PB_NCH34_PE1
|
||||
PB_NCH34_PE2
|
||||
WPB_NCH34_PKGREL_PB1SOLPB_NCH34_PKGREL_SOL1
|
||||
PB_NCH35_PE1
|
||||
PB_NCH35_PE2
|
||||
WPB_NCH35_PKGREL_PB1SOLPB_NCH35_PKGREL_SOL1
|
||||
PB_NCH36_PE1
|
||||
PB_NCH36_PE2
|
||||
WPB_NCH36_PKGREL_PB1SOLPB_NCH36_PKGREL_SOL1
|
||||
PB_NCH37_PE1
|
||||
PB_NCH37_PE2
|
||||
WPB_NCH37_PKGREL_PB1SOLPB_NCH37_PKGREL_SOL1
|
||||
PB_NCH38_PE1
|
||||
PB_NCH38_PE2
|
||||
WPB_NCH38_PKGREL_PB1SOLPB_NCH38_PKGREL_SOL1
|
||||
PB_NCH39_PE1
|
||||
PB_NCH39_PE2
|
||||
WPB_NCH39_PKGREL_PB1SOLPB_NCH39_PKGREL_SOL1
|
||||
PB_NCH40_PE1
|
||||
PB_NCH40_PE2
|
||||
WPB_NCH40_PKGREL_PB1SOLPB_NCH40_PKGREL_SOL1
|
||||
PB_NCH41_PE1
|
||||
PB_NCH41_PE2
|
||||
WPB_NCH41_PKGREL_PB1SOLPB_NCH41_PKGREL_SOL1
|
||||
PB_NCH42_PE1
|
||||
PB_NCH42_PE2
|
||||
WPB_NCH42_PKGREL_PB1SOLPB_NCH42_PKGREL_SOL1
|
||||
PB_NCH43_PE1
|
||||
PB_NCH43_PE2
|
||||
WPB_NCH43_PKGREL_PB1SOLPB_NCH43_PKGREL_SOL1
|
||||
PB_NCH44_PE1
|
||||
PB_NCH44_PE2
|
||||
WPB_NCH44_PKGREL_PB1SOLPB_NCH44_PKGREL_SOL1
|
||||
PB_NCH45_PE1
|
||||
PB_NCH45_PE2
|
||||
WPB_NCH45_PKGREL_PB1SOLPB_NCH45_PKGREL_SOL1
|
||||
PB_NCH46_PE1
|
||||
PB_NCH46_PE2
|
||||
WPB_NCH46_PKGREL_PB1SOLPB_NCH46_PKGREL_SOL1
|
||||
PB_NCH47_PE1
|
||||
PB_NCH47_PE2
|
||||
WPB_NCH47_PKGREL_PB1SOLPB_NCH47_PKGREL_SOL1
|
||||
PB_NCH48_PE1
|
||||
PB_NCH48_PE2
|
||||
WPB_NCH48_PKGREL_PB1SOLPB_NCH48_PKGREL_SOL1
|
||||
PB_NCH49_PE1
|
||||
PB_NCH49_PE2
|
||||
WPB_NCH49_PKGREL_PB1SOLPB_NCH49_PKGREL_SOL1
|
||||
PB_NCH50_PE1
|
||||
PB_NCH50_PE2
|
||||
WPB_NCH50_PKGREL_PB1SOLPB_NCH50_PKGREL_SOL1
|
||||
PB_NCH51_PE1
|
||||
PB_NCH51_PE2
|
||||
WPB_NCH51_PKGREL_PB1SOLPB_NCH51_PKGREL_SOL1
|
||||
PB_NCH52_PE1
|
||||
PB_NCH52_PE2
|
||||
WPB_NCH52_PKGREL_PB1SOLPB_NCH52_PKGREL_SOL1
|
||||
PB_NCH53_PE1
|
||||
PB_NCH53_PE2
|
||||
WPB_NCH53_PKGREL_PB1SOLPB_NCH53_PKGREL_SOL1
|
||||
PB_NCH54_PE1
|
||||
PB_NCH54_PE2
|
||||
WPB_NCH54_PKGREL_PB1SOLPB_NCH54_PKGREL_SOL1
|
||||
PB_NCH55_PE1
|
||||
PB_NCH55_PE2
|
||||
WPB_NCH55_PKGREL_PB1SOLPB_NCH55_PKGREL_SOL1
|
||||
PB_NCH56_PE1
|
||||
PB_NCH56_PE2
|
||||
WPB_NCH56_PKGREL_PB1SOLPB_NCH56_PKGREL_SOL1
|
||||
PB_NCH57_PE1
|
||||
PB_NCH57_PE2
|
||||
WPB_NCH57_PKGREL_PB1SOLPB_NCH57_PKGREL_SOL1
|
||||
PB_NCH58_PE1
|
||||
PB_NCH58_PE2
|
||||
WPB_NCH58_PKGREL_PB1SOLPB_NCH58_PKGREL_SOL1
|
||||
PB_NCH59_PE1
|
||||
PB_NCH59_PE2
|
||||
WPB_NCH59_PKGREL_PB1SOLPB_NCH59_PKGREL_SOL1
|
||||
PB_NCH60_PE1
|
||||
PB_NCH60_PE2
|
||||
WPB_NCH60_PKGREL_PB1SOLPB_NCH60_PKGREL_SOL1
|
||||
PB_NCH61_PE1
|
||||
PB_NCH61_PE2
|
||||
WPB_NCH61_PKGREL_PB1SOLPB_NCH61_PKGREL_SOL1
|
||||
BBGAB BBGAB BBGAB BBGAB BBGAB BBGAB BBGAB BBGAB BBGAB BBGAB BBGAB BBGAB BBGAB BBGAB BBGAB BBGAB BBGAB BBGABBBGBBBGB BBGBBBGBBBGB BBGB BBGB BBGB BBGBBBGB BBGBBBGB BBGBBBGBBBGB BBGB BBGB BBGB BBGBBBGBBBGB BBGBBBGBBBGB BBGBBBGBBBGB BBGBBBGB BBGBBBGBBBGB BBGBBBGBBBGB BBGBBBGBBBGB BBGBBBGBBBGB
|
||||
806
projects/MTN6/extracted_texts/MTN6_SYSDL-MCM05.txt
Normal file
806
projects/MTN6/extracted_texts/MTN6_SYSDL-MCM05.txt
Normal file
@ -0,0 +1,806 @@
|
||||
TRASH
|
||||
PALLETSTAGINGAREA
|
||||
PROBLEM SOLV.CART 80/20
|
||||
PROB. SOLV. CART
|
||||
TRASHTRASH
|
||||
PALLETSTAGINGAREA
|
||||
PROBLEM SOLV.CART 80/20
|
||||
PROB. SOLV. CART
|
||||
TRASHTRASH
|
||||
PALLETSTAGINGAREA
|
||||
PROBLEM SOLV.CART 80/20
|
||||
PROB. SOLV. CART
|
||||
TRASHTRASH
|
||||
PALLETSTAGINGAREA
|
||||
PROBLEM SOLV.CART 80/20
|
||||
PROB. SOLV. CART
|
||||
TRASHTRASH
|
||||
PALLETSTAGINGAREA
|
||||
PROBLEM SOLV.CART 80/20
|
||||
PROB. SOLV. CART
|
||||
TRASH
|
||||
TRASH
|
||||
PALLETSTAGINGAREA
|
||||
PROBLEM SOLV.CART 80/20
|
||||
PROB. SOLV. CART
|
||||
TRASHTRASH
|
||||
PALLETSTAGINGAREA
|
||||
PROBLEM SOLV.CART 80/20
|
||||
PROB. SOLV. CART
|
||||
TRASHTRASH
|
||||
PALLETSTAGINGAREA
|
||||
PROBLEM SOLV.CART 80/20
|
||||
PROB. SOLV. CART
|
||||
TRASHTRASH
|
||||
PALLETSTAGINGAREA
|
||||
PROBLEM SOLV.CART 80/20
|
||||
PROB. SOLV. CART
|
||||
TRASH
|
||||
PRS1_2A_VFD13HP120 FPMPRS1_2B_VFD13HP120 FPM
|
||||
PRS1_3_VFD17.5HP120 FPM
|
||||
PRS1_4_VFD13HP120 FPMPRS1_6_VFD12HP120 FPMPRS2_1_VFD17.5HP120 FPM
|
||||
PRS1_2A_JPE1
|
||||
EPCPRS1_6_EPC1
|
||||
EPCPRS1_6_EPC2
|
||||
EPCPRS2_1_EPC1
|
||||
EPCPRS2_1_EPC2GPRS2_1_S1
|
||||
GPRS2_1_S2BBR
|
||||
ABBWPRS1_2A_JR2
|
||||
ABBWPRS1_3_JR1
|
||||
ABBWPRS1_4_JR1GPRS1_6_S1BBR
|
||||
GPRS1_6_S2BBR
|
||||
11'-3" EL
|
||||
9'-1" EL
|
||||
ULC1_3_VFD12HP80FPMULC2_3_VFD12HP80FPMULC3_3_VFD12HP80FPMULC4_3_VFD12HP80FPM
|
||||
PS8_1_VFD17.5HP140-200 FPM
|
||||
PS8_2_VFD110HP180-240 FPM
|
||||
PS8_4_VFD115HP240 FPM PS8_5_VFD115HP240 FPM
|
||||
PS9_2_VFD17.5HP240 FPM
|
||||
PS8_8_VFD17.5HP220-330 FPM
|
||||
PS8_9_VFD115HP240 FPM
|
||||
PS8_11_VFD110HP240 FPM
|
||||
PS8_11_DIV1_LS1LSPS8_11_DIV1_LS2LSSOLPS8_11_DIV1_SOL1SOLPS8_11_DIV1_SOL2
|
||||
PS8_11_DIV2_LS1LSPS8_11_DIV2_LS2LSSOLPS8_11_DIV2_SOL1SOLPS8_11_DIV2_SOL2
|
||||
PS8_5_JPE1
|
||||
PS8_11_JPE1
|
||||
PS8_2_JPE1
|
||||
PS8_1_JPE6
|
||||
PS8_11_FIO1
|
||||
WPS8_11_JR1ABB
|
||||
WPS8_11_JR2
|
||||
WPS8_9_JR1ABBPS8_5_SIO1
|
||||
ABB
|
||||
WPS8_1_JR2ABB RABB EPCULC1_3_EPC1
|
||||
EPCULC1_3_EPC2
|
||||
EPCULC2_3_EPC1
|
||||
EPCULC3_3_EPC1
|
||||
EPCULC4_3_EPC1
|
||||
EPCPS8_2_EPC1
|
||||
EPCPS8_1_EPC1
|
||||
EPCPS8_11_EPC1
|
||||
GPS8_11_S1ABBR
|
||||
EPCPS8_5_EPC2ABBR
|
||||
GPS8_5_S2
|
||||
ABBR
|
||||
EPCPS8_4_EPC1
|
||||
EPCPS8_4_EPC2
|
||||
BB
|
||||
BBR
|
||||
ARGPS8_4_S1
|
||||
GPS8_4_S2 EPCPS8_5_EPC1GPS8_5_S1ABBR
|
||||
PS8_1_FIO1PS8_1_FIO2
|
||||
BB
|
||||
PS8_12CH_FPE1
|
||||
GBBAB
|
||||
EPCPS8_2_EPC2
|
||||
ULC1_3_JPE1
|
||||
B
|
||||
EPCPS9_2_EPC1
|
||||
GPS9_2_S1
|
||||
PS8-12CH-PS1PS
|
||||
PS8_11_CH1_JPE1PS8_11_CH1_FPE1GPS8_11_CH1_S1
|
||||
VV
|
||||
FL_DPM3MCM05
|
||||
FL_DPM4MCM05
|
||||
ULGLA_DPM1MCM05
|
||||
PRS2_DPM1MCM05
|
||||
CH_DPM7MCM05 CH_DPM8MCM05 CH_DPM10MCM05 CH_DPM11MCM05
|
||||
R
|
||||
GPS8_2_S2
|
||||
GPS8_2_S1BBR
|
||||
PS8_4_SIO1 PS8_6_FIO1
|
||||
PS8_6_VFD15HP240 FPM
|
||||
PS8_8_TPE1PS8_8_TPE2 PS8_9_SIO1PS8_9_JPE1
|
||||
PS8_11_TPE1
|
||||
PS8_11_CH1_FPE2PS8_11_JPE2PS8_11_CH2_JPE1PS8_11_CH2_FPE1PS8_11_CH2_FPE2
|
||||
GPS8_11_CH2_S1GBBAB PS8_11_FIO2
|
||||
PS8_11_DIV3_LS1LSPS8_11_DIV3_LS2LSSOLPS8_11_DIV3_SOL1SOLPS8_11_DIV3_SOL2
|
||||
PS8_11_DIV4_LS1LSPS8_11_DIV4_LS2LSSOLPS8_11_DIV4_SOL1SOLPS8_11_DIV4_SOL2
|
||||
PS8_11_FIO3GBBABPS8_11_CH3_JPE1PS8_11_CH3_FPE1GPS8_11_CH3_S1
|
||||
PS8_11_CH3_FPE2PS8_11_JPE4PS8_11_CH4_JPE1PS8_11_CH4_FPE1PS8_11_CH4_FPE2
|
||||
GPS8_11_CH4_S1GBBAB PS8_11_FIO4
|
||||
PS8_11_JPE3
|
||||
ABPS8_11_JPE5PS8_11_FIO5
|
||||
EPCPS9_2_EPC2BBRGPS9_2_S2PS9_1CH_JPE1
|
||||
PS9_2_TPE1
|
||||
PS9_3_VFD17.5HP190-270 FPM
|
||||
WPS9_3_JR1ABB
|
||||
PS9_3_FIO1 EPCPS9_3_EPC1ABBRB PS9-3-PS1PS
|
||||
GPS9_3_S1
|
||||
PS9_3_JPE1
|
||||
GBBAB
|
||||
GBBAB
|
||||
GPS9_3CH2_S1
|
||||
GPS9_3CH1_S1
|
||||
PS9_3CH2_JPE1PS9_3CH2_FPE1PS9_3CH2_FPE2
|
||||
PS9_3CH1_JPE1PS9_3CH1_FPE1PS9_3CH1_FPE2
|
||||
GBBAB
|
||||
GBBAB
|
||||
GPS9_3CH4_S1
|
||||
GPS9_3CH6_S1
|
||||
PS9_3CH4_JPE1PS9_3CH4_FPE1PS9_3CH4_FPE2PS9_3CH3_JPE1PS9_3CH6_FPE1PS9_3CH6_FPE2
|
||||
PS9_3DIV1_LS1LSPS9_3DIV1_LS2LSSOLPS9_3DIV1_SOL1SOLPS9_3DIV1_SOL2
|
||||
PS9_3DIV2_LS1LSPS9_3DIV2_LS2LSSOLPS9_3DIV2_SOL1SOLPS9_3DIV2_SOL2
|
||||
PS9_3DIV3_LS1LSPS9_3DIV3_LS2LSSOLPS9_3DIV3_SOL1SOLPS9_3DIV3_SOL2
|
||||
PS9_3DIV4_LS1LSPS9_3DIV4_LS2LSSOLPS9_3DIV4_SOL1SOLPS9_3DIV4_SOL2
|
||||
PS9_3_FIO2PS9_3_JPE3
|
||||
PS9_3_FIO3PS9_3_JPE4
|
||||
PS9_3_FIO4
|
||||
PS9_3_JPE5PS9_4CH_FPE1
|
||||
RGULC1_3_SS1
|
||||
ULC1_3_ENC1
|
||||
PS8_1_ENC1
|
||||
PS8_2_ENC1
|
||||
PS8_4_ENC1 PS8_5_ENC1 PS8_8_ENC1 PS8_9_ENC1
|
||||
PS8_11_ENC1PS9_2_ENC1
|
||||
ULC1_3_JPE2
|
||||
RGULC1_3_SS2ULC2_3_JPE1ULC3_3_JPE1ULC4_3_JPE1
|
||||
ULC2_3_ENC1ULC3_3_ENC1ULC4_3_ENC1RABBULC2_3_JPE2RABBULC3_3_JPE2RABBULC4_3_JPE2
|
||||
WULC1_3_JR1
|
||||
WULC2_3_JR1
|
||||
WULC3_3_JR1
|
||||
WULC4_3_JR1
|
||||
RGULC2_3_SS1RGULC3_3_SS1RGULC4_3_SS1
|
||||
PS8_1_FIO3PS8_1_FIO4PS8_1_FIO5
|
||||
RGPS8_1_SS1
|
||||
PS8_1_JPE2PS8_1_JPE1PS8_1_JPE3PS8_1_JPE4PS8_1_JPE5
|
||||
WPS8_1_JR1ABB
|
||||
PRS1_1ACH_JPE1
|
||||
WPRS1_2A_JR1ABBB
|
||||
PRS1_2A_FIO1
|
||||
ABBRPRS2_1_JPE1
|
||||
PRS1_2A_JPE2
|
||||
PRS1_1BCH_JPE1ABBBPRS1_2B_JPE1
|
||||
WPRS1_2B_JR1PRS1_2B_FIO1PRS1_2B_JPE2ABBWPRS1_2B_JR2PRS1_3_FIO1
|
||||
PRS1_3_JPE1
|
||||
PRS1_4_FIO1
|
||||
PRS1_3_JPE2
|
||||
PRS1_4_JPE1PRS1_4_JPE2PRS1_5CH_JPE1PRS1_5CH_FPE1PRS1_6_TPE1
|
||||
PRS1_6_TPE2
|
||||
TRASH
|
||||
PALLETSTAGINGAREA
|
||||
PROBLEM SOLV.CART 80/20
|
||||
PROB. SOLV. CART
|
||||
TRASHTRASH
|
||||
PALLETSTAGINGAREA
|
||||
PROBLEM SOLV.CART 80/20
|
||||
PROB. SOLV. CART
|
||||
TRASHTRASH
|
||||
PALLETSTAGINGAREA
|
||||
PROBLEM SOLV.CART 80/20
|
||||
PROB. SOLV. CART
|
||||
TRASHTRASH
|
||||
PALLETSTAGINGAREA
|
||||
PROBLEM SOLV.CART 80/20
|
||||
PROB. SOLV. CART
|
||||
TRASHTRASH
|
||||
PALLETSTAGINGAREA
|
||||
PROBLEM SOLV.CART 80/20
|
||||
PROB. SOLV. CART
|
||||
TRASH
|
||||
TRASH
|
||||
PALLETSTAGINGAREA
|
||||
PROBLEM SOLV.CART 80/20
|
||||
PROB. SOLV. CART
|
||||
TRASHTRASH
|
||||
PALLETSTAGINGAREA
|
||||
PROBLEM SOLV.CART 80/20
|
||||
PROB. SOLV. CART
|
||||
TRASHTRASH
|
||||
PALLETSTAGINGAREA
|
||||
PROBLEM SOLV.CART 80/20
|
||||
PROB. SOLV. CART
|
||||
TRASHTRASH
|
||||
PALLETSTAGINGAREA
|
||||
PROBLEM SOLV.CART 80/20
|
||||
PROB. SOLV. CART
|
||||
TRASH
|
||||
ERSCPRS1-7-ERSC1
|
||||
MDR POWER SUPPLYPRS1-7-PS180AMDR POWER SUPPLYPRS1-7-PS280A
|
||||
PRS1_7_PE1PRS1_7_PE2PRS1_7_PE3PRS1_7_PE4PRS1_7_PE5PRS1_7_PE6PRS1_7_PE7PRS1_7_PE8PRS1_7_PE9PRS1_7_PE10PRS1_7_PE11PRS1_7_PE12PRS1_7_PE13PRS1_7_PE14PRS1_7_PE15PRS1_7_PE16PRS1_7_PE17PRS1_7_PE18PRS1_7_PE19PRS1_7_PE20PRS1_7_PE21PRS1_7_PE22PRS1_7_PE23PRS1_7_PE24PRS1_7_PE25PRS1_7_PE26PRS1_7_PE27
|
||||
ERSCPRS1-7-ERSC2
|
||||
ERSCPRS1-7-ERSC3
|
||||
ERSCPRS1-7-ERSC4
|
||||
ERSCPRS1-7-ERSC5
|
||||
ERSCPRS1-7-ERSC6
|
||||
ERSCPRS1-7-ERSC7
|
||||
ERSCPRS1-7-ERSC8
|
||||
ERSCPRS1-7-ERSC9
|
||||
ERSCPRS1-7-ERSC10
|
||||
ERSCPRS1-7-ERSC11
|
||||
ERSCPRS1-7-ERSC12
|
||||
ERSCPRS1-7-ERSC13
|
||||
ERSCPRS1-7-ERSC14
|
||||
GDTC_SCH1_EN1
|
||||
GDTC_SCH2_EN1BBGABBBGB
|
||||
FL2074_2_PE1ABBB
|
||||
FL2074_1CH_PE1
|
||||
FL2074_2_PE2
|
||||
FL2074_2_VFD15HP350FPM
|
||||
FL2074_3CH_PE1BBBWFL2074_2_JR2
|
||||
WFL2074_2_JR1
|
||||
FL2078_2_PE1ABBB
|
||||
FL2078_1CH_PE1
|
||||
FL2078_2_PE2
|
||||
FL2078_2_VFD15HP350FPM
|
||||
FL2078_3CH_PE1BBBWFL2078_2_JR2
|
||||
WFL2078_2_JR1
|
||||
FL2086_2_PE1ABBB
|
||||
FL2086_1CH_PE1
|
||||
FL2086_2_PE2
|
||||
FL2086_2_VFD15HP350FPM
|
||||
FL2086_3CH_PE1BBBWFL2086_2_JR2
|
||||
WFL2086_2_JR1
|
||||
FL2090_2_PE1ABBB
|
||||
FL2090_1CH_PE1
|
||||
FL2090_2_PE2
|
||||
FL2090_2_VFD15HP350FPM
|
||||
FL2090_3CH_PE1BBBWFL2090_2_JR2
|
||||
WFL2090_2_JR1
|
||||
FL2094_2_PE1ABBB
|
||||
FL2094_1CH_PE1
|
||||
FL2094_2_PE2
|
||||
FL2094_2_VFD15HP350FPM
|
||||
FL2094_3CH_PE1BBBWFL2094_2_JR2
|
||||
WFL2094_2_JR1
|
||||
FL4082_2_PE1ABBB
|
||||
FL4082_1CH_PE1
|
||||
FL4082_2_PE2
|
||||
FL4082_2_VFD15HP350FPM
|
||||
FL4082_3CH_PE1BBBWFL4082_2_JR2
|
||||
WFL4082_2_JR1
|
||||
FL4078_2_PE1ABBB
|
||||
FL4078_1CH_PE1
|
||||
FL4078_2_PE2
|
||||
FL4078_2_VFD15HP350FPM
|
||||
FL4078_3CH_PE1BBBWFL4078_2_JR2
|
||||
WFL4078_2_JR1
|
||||
FL4074_2_PE1ABBB
|
||||
FL4074_1CH_PE1
|
||||
FL4074_2_PE2
|
||||
FL4074_2_VFD15HP350FPM
|
||||
FL4074_3CH_PE1BBBWFL4074_2_JR2
|
||||
WFL4074_2_JR1
|
||||
FL4070_2_PE1ABBB
|
||||
FL4070_1CH_PE1
|
||||
FL4070_2_PE2
|
||||
FL4070_2_VFD15HP350FPM
|
||||
FL4070_3CH_PE1BBBWFL4070_2_JR2
|
||||
WFL4070_2_JR1
|
||||
FL4066_2_PE1ABBB
|
||||
FL4066_1CH_PE1
|
||||
FL4066_2_PE2
|
||||
FL4066_2_VFD15HP350FPM
|
||||
FL4066_3CH_PE1BBBWFL4066_2_JR2
|
||||
WFL4066_2_JR1
|
||||
CH_DPM9MCM05 CH_DPM12MCM05CH_DPM7_FIOM2CH_DPM7_FIOM1CH_DPM7_FIOM4CH_DPM7_FIOM3CH_DPM7_FIOM6CH_DPM7_FIOM5CH_DPM7_FIOM8CH_DPM7_FIOM7CH_DPM8_FIOM2CH_DPM8_FIOM1CH_DPM8_FIOM4CH_DPM8_FIOM3CH_DPM8_FIOM6CH_DPM8_FIOM5CH_DPM8_FIOM8CH_DPM8_FIOM7CH_DPM9_FIOM2CH_DPM9_FIOM1CH_DPM9_FIOM4CH_DPM9_FIOM3CH_DPM9_FIOM5CH_DPM9_FIOM6 CH_DPM10_FIOM2CH_DPM10_FIOM1CH_DPM10_FIOM4CH_DPM10_FIOM3CH_DPM10_FIOM6CH_DPM10_FIOM5CH_DPM10_FIOM8CH_DPM10_FIOM7CH_DPM11_FIOM2CH_DPM11_FIOM1CH_DPM11_FIOM4CH_DPM11_FIOM3CH_DPM11_FIOM6CH_DPM11_FIOM5CH_DPM11_FIOM8CH_DPM11_FIOM7CH_DPM12_FIOM2CH_DPM12_FIOM1CH_DPM12_FIOM4CH_DPM12_FIOM3
|
||||
GDTC_SCH3_EN1BBGB
|
||||
GDTC_SCH4_EN1BBGB
|
||||
GDTC_SCH5_EN1BBGAB
|
||||
GDTC_SCH6_EN1BBGB
|
||||
GDTC_SCH7_EN1BBGB
|
||||
GDTC_SCH8_EN1BBGB
|
||||
GDTC_SCH10_EN1BBGB
|
||||
GDTC_SCH11_EN1BBGB
|
||||
GDTC_SCH12_EN1BBGB
|
||||
GDTC_SCH14_EN1BBGB
|
||||
GDTC_SCH15_EN1BBGB
|
||||
GBBGB
|
||||
GBBGB
|
||||
GBBGB
|
||||
GBBGB
|
||||
GBBGB
|
||||
GBBGB
|
||||
GBBGB
|
||||
GBBGB
|
||||
GBBGB
|
||||
GBBGB
|
||||
GBBGB
|
||||
GBBGB
|
||||
GBBGB
|
||||
GBBGB
|
||||
GBBGB
|
||||
GBBGB
|
||||
GBBGB
|
||||
GDTC_SCH41_EN1BBGB
|
||||
GDTC_SCH42_EN1BBGB
|
||||
GDTC_SCH45_EN1BBGB
|
||||
GDTC_SCH48_EN1BBGB
|
||||
GDTC_SCH50_EN1BBGB
|
||||
GDTC_SCH51_EN1BBGB
|
||||
GDTC_SCH52_EN1BBGB
|
||||
GDTC_SCH54_EN1BBGB
|
||||
GDTC_SCH55_EN1BBGB
|
||||
GDTC_SCH57_EN1BBGB
|
||||
GDTC_SCH58_EN1BBGB
|
||||
GDTC_SCH60_EN1BBGB
|
||||
GDTC_SCH61_EN1BBGB
|
||||
GDTC_SCH63_EN1BBGB
|
||||
GDTC_SCH64_EN1BBGB
|
||||
GDTC_SCH65_EN1BBGB
|
||||
GDTC_SCH67_EN1BBGB
|
||||
GDTC_SCH68_EN1BBGB
|
||||
GDTC_SCH69_EN1BBGB
|
||||
GDTC_SCH9_EN1BBGAB
|
||||
GDTC_SCH13_EN1BBGAB
|
||||
GDTC_SCH16_EN1BBGAB BBGAB
|
||||
G G G G GBBGAB BBGAB BBGAB BBGAB BBGAB
|
||||
G
|
||||
GDTC_SCH40_EN1BBGAB
|
||||
GDTC_SCH43_EN1BBGAB
|
||||
GDTC_SCH46_EN1BBGAB
|
||||
GDTC_SCH49_EN1BBGAB
|
||||
GDTC_SCH44_EN1BBGB
|
||||
GDTC_SCH47_EN1BBGB
|
||||
GDTC_SCH53_EN1BBGAB
|
||||
GDTC_SCH56_EN1BBGAB
|
||||
GDTC_SCH59_EN1BBGAB
|
||||
GDTC_SCH62_EN1BBGAB
|
||||
GDTC_SCH66_EN1BBGAB
|
||||
PB_SCH1_FIOH1
|
||||
PB_SCH1_PE1
|
||||
PB_SCH1_PE2
|
||||
BBGAB
|
||||
W
|
||||
PB_SCH1_PKGREL_PB1
|
||||
SOLPB_SCH1_PKGREL_SOL1
|
||||
BBGB
|
||||
PB_SCH2_PE1
|
||||
PB_SCH2_PE2
|
||||
SOL
|
||||
PB_SCH2_PKGREL_SOL1
|
||||
WPB_SCH2_PKGREL_PB1
|
||||
PB_SCH3_FIOH1PB_SCH5_FIOH1PB_SCH7_FIOH1PB_SCH9_FIOH1PB_SCH11_FIOH1PB_SCH13_FIOH1PB_SCH15_FIOH1PB_SCH17_FIOH1PB_SCH18_FIOH1PB_SCH20_FIOH1PB_SCH22_FIOH1PB_SCH24_FIOH1PB_SCH26_FIOH1PB_SCH28_FIOH1PB_SCH30_FIOH1PB_SCH32_FIOH1PB_SCH33_FIOH1PB_SCH35_FIOH1PB_SCH36_FIOH1PB_SCH38_FIOH1PB_SCH39_FIOH1PB_SCH40_FIOH1PB_SCH41_FIOH1 PB_SCH42_FIOH1PB_SCH43_FIOH1PB_SCH44_FIOH1PB_SCH45_FIOH1PB_SCH46_FIOH1PB_SCH48_FIOH1PB_SCH50_FIOH1PB_SCH52_FIOH1PB_SCH54_FIOH1PB_SCH56_FIOH1PB_SCH58_FIOH1PB_SCH60_FIOH1PB_SCH62_FIOH1PB_SCH63_FIOH1PB_SCH65_FIOH1PB_SCH67_FIOH1PB_SCH69_FIOH1PB_SCH71_FIOH1PB_SCH73_FIOH1PB_SCH75_FIOH1
|
||||
BBGB
|
||||
PB_SCH3_PE1
|
||||
PB_SCH3_PE2
|
||||
SOLPB_SCH3_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH3_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH4_PE1
|
||||
PB_SCH4_PE2
|
||||
SOL
|
||||
PB_SCH4_PKGREL_SOL1
|
||||
WPB_SCH4_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH6_PE1
|
||||
PB_SCH6_PE2
|
||||
SOL
|
||||
PB_SCH6_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH6_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH7_PE1
|
||||
PB_SCH7_PE2
|
||||
SOLPB_SCH7_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH7_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH8_PE1
|
||||
PB_SCH8_PE2
|
||||
SOLPB_SCH8_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH8_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH10_PE1
|
||||
PB_SCH10_PE2
|
||||
SOLPB_SCH10_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH10_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH11_PE1
|
||||
PB_SCH11_PE2
|
||||
SOLPB_SCH11_PKGREL_SOL1
|
||||
WPB_SCH11_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH12_PE1
|
||||
PB_SCH12_PE2
|
||||
SOLPB_SCH12_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH12_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH14_PE1
|
||||
PB_SCH14_PE2
|
||||
SOLPB_SCH14_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH14_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH15_PE1
|
||||
PB_SCH15_PE2
|
||||
SOL
|
||||
PB_SCH15_PKGREL_SOL1
|
||||
WPB_SCH15_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH16_PE1
|
||||
PB_SCH16_PE2
|
||||
SOLPB_SCH16_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH16_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH18_PE1
|
||||
PB_SCH18_PE2
|
||||
SOLPB_SCH18_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH18_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH19_PE1
|
||||
PB_SCH19_PE2
|
||||
SOLPB_SCH19_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH19_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH21_PE1
|
||||
PB_SCH21_PE2
|
||||
SOLPB_SCH21_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH21_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH22_PE1
|
||||
PB_SCH22_PE2
|
||||
SOLPB_SCH22_PKGREL_SOL1
|
||||
WPB_SCH22_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH23_PE1
|
||||
PB_SCH23_PE2
|
||||
SOLPB_SCH23_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH23_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH25_PE1
|
||||
PB_SCH25_PE2
|
||||
SOLPB_SCH25_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH25_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH26_PE1
|
||||
PB_SCH26_PE2
|
||||
SOLPB_SCH26_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH26_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH27_PE1
|
||||
PB_SCH27_PE2
|
||||
SOLPB_SCH27_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH27_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH29_PE1
|
||||
PB_SCH29_PE2
|
||||
SOLPB_SCH29_PKGREL_SOL1
|
||||
WPB_SCH29_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH30_PE1
|
||||
PB_SCH30_PE2
|
||||
SOLPB_SCH30_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH30_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH31_PE1
|
||||
PB_SCH31_PE2
|
||||
SOLPB_SCH31_PKGREL_SOL1
|
||||
WPB_SCH31_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH33_PE1
|
||||
PB_SCH33_PE2
|
||||
SOLPB_SCH33_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH33_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH34_PE1
|
||||
PB_SCH34_PE2
|
||||
SOLPB_SCH34_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH34_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH36_PE1
|
||||
PB_SCH36_PE2
|
||||
SOL
|
||||
PB_SCH36_PKGREL_SOL1
|
||||
WPB_SCH36_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH37_PE1
|
||||
PB_SCH37_PE2
|
||||
SOLPB_SCH37_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH37_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH39_PE1
|
||||
PB_SCH39_PE2
|
||||
SOLPB_SCH39_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH39_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH41_PE1
|
||||
PB_SCH41_PE2
|
||||
SOLPB_SCH41_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH41_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH43_PE1
|
||||
PB_SCH43_PE2
|
||||
SOLPB_SCH43_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH43_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH45_PE1
|
||||
PB_SCH45_PE2
|
||||
SOLPB_SCH45_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH45_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH47_PE1
|
||||
PB_SCH47_PE2
|
||||
SOL
|
||||
PB_SCH47_PKGREL_SOL1
|
||||
WPB_SCH47_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH49_PE1
|
||||
PB_SCH49_PE2
|
||||
SOL
|
||||
PB_SCH49_PKGREL_SOL1
|
||||
WPB_SCH49_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH50_PE1
|
||||
PB_SCH50_PE2
|
||||
SOLPB_SCH50_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH50_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH51_PE1
|
||||
PB_SCH51_PE2
|
||||
SOL
|
||||
PB_SCH51_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH51_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH53_PE1
|
||||
PB_SCH53_PE2
|
||||
SOLPB_SCH53_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH53_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH54_PE1
|
||||
PB_SCH54_PE2
|
||||
SOLPB_SCH54_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH54_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH55_PE1
|
||||
PB_SCH55_PE2
|
||||
SOLPB_SCH55_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH55_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH57_PE1
|
||||
PB_SCH57_PE2
|
||||
SOLPB_SCH57_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH57_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH58_PE1
|
||||
PB_SCH58_PE2
|
||||
SOLPB_SCH58_PKGREL_SOL1
|
||||
WPB_SCH58_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH59_PE1
|
||||
PB_SCH59_PE2
|
||||
SOLPB_SCH59_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH59_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH61_PE1
|
||||
PB_SCH61_PE2
|
||||
SOLPB_SCH61_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH61_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH62_PE1
|
||||
PB_SCH62_PE2
|
||||
SOL
|
||||
PB_SCH62_PKGREL_SOL1
|
||||
WPB_SCH62_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH64_PE1
|
||||
PB_SCH64_PE2
|
||||
SOLPB_SCH64_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH64_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH65_PE1
|
||||
PB_SCH65_PE2
|
||||
SOL
|
||||
PB_SCH65_PKGREL_SOL1
|
||||
WPB_SCH65_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH66_PE1
|
||||
PB_SCH66_PE2
|
||||
SOLPB_SCH66_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH66_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH68_PE1
|
||||
PB_SCH68_PE2
|
||||
SOLPB_SCH68_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH68_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH69_PE1
|
||||
PB_SCH69_PE2
|
||||
SOL
|
||||
PB_SCH69_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH69_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH70_PE1
|
||||
PB_SCH70_PE2
|
||||
SOLPB_SCH70_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH70_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH72_PE1
|
||||
PB_SCH72_PE2
|
||||
SOLPB_SCH72_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH72_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH73_PE1
|
||||
PB_SCH73_PE2
|
||||
SOLPB_SCH73_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH73_PKGREL_PB1
|
||||
BBGB
|
||||
PB_SCH75_PE1
|
||||
PB_SCH75_PE2
|
||||
SOLPB_SCH75_PKGREL_SOL1
|
||||
W
|
||||
PB_SCH75_PKGREL_PB1
|
||||
PB_SCH5_PE1
|
||||
PB_SCH5_PE2
|
||||
BBGAB
|
||||
W
|
||||
PB_SCH5_PKGREL_PB1
|
||||
SOLPB_SCH5_PKGREL_SOL1
|
||||
PB_SCH9_PE1
|
||||
PB_SCH9_PE2
|
||||
BBGAB
|
||||
WPB_SCH9_PKGREL_PB1
|
||||
SOLPB_SCH9_PKGREL_SOL1
|
||||
PB_SCH13_PE1
|
||||
PB_SCH13_PE2
|
||||
BBGAB
|
||||
WPB_SCH13_PKGREL_PB1
|
||||
SOLPB_SCH13_PKGREL_SOL1
|
||||
PB_SCH17_PE1
|
||||
PB_SCH17_PE2
|
||||
BBGAB
|
||||
WPB_SCH17_PKGREL_PB1
|
||||
SOL
|
||||
PB_SCH17_PKGREL_SOL1
|
||||
PB_SCH20_PE1
|
||||
PB_SCH20_PE2
|
||||
BBGAB
|
||||
WPB_SCH20_PKGREL_PB1
|
||||
SOLPB_SCH20_PKGREL_SOL1
|
||||
PB_SCH24_PE1
|
||||
PB_SCH24_PE2
|
||||
BBGAB
|
||||
WPB_SCH24_PKGREL_PB1
|
||||
SOL
|
||||
PB_SCH24_PKGREL_SOL1
|
||||
PB_SCH28_PE1
|
||||
PB_SCH28_PE2
|
||||
BBGAB
|
||||
W
|
||||
PB_SCH28_PKGREL_PB1
|
||||
SOLPB_SCH28_PKGREL_SOL1
|
||||
PB_SCH32_PE1
|
||||
PB_SCH32_PE2
|
||||
BBGAB
|
||||
W
|
||||
PB_SCH32_PKGREL_PB1
|
||||
SOLPB_SCH32_PKGREL_SOL1
|
||||
PB_SCH35_PE1
|
||||
PB_SCH35_PE2
|
||||
BBGAB
|
||||
W
|
||||
PB_SCH35_PKGREL_PB1
|
||||
SOL
|
||||
PB_SCH35_PKGREL_SOL1
|
||||
PB_SCH38_PE1
|
||||
PB_SCH38_PE2
|
||||
BBGAB
|
||||
WPB_SCH38_PKGREL_PB1
|
||||
SOL
|
||||
PB_SCH38_PKGREL_SOL1
|
||||
PB_SCH40_PE1
|
||||
PB_SCH40_PE2
|
||||
BBGAB
|
||||
W
|
||||
PB_SCH40_PKGREL_PB1
|
||||
SOLPB_SCH40_PKGREL_SOL1
|
||||
PB_SCH42_PE1
|
||||
PB_SCH42_PE2
|
||||
BBGAB
|
||||
WPB_SCH42_PKGREL_PB1
|
||||
SOLPB_SCH42_PKGREL_SOL1
|
||||
PB_SCH44_PE1
|
||||
PB_SCH44_PE2
|
||||
BBGAB
|
||||
W
|
||||
PB_SCH44_PKGREL_PB1
|
||||
SOLPB_SCH44_PKGREL_SOL1
|
||||
PB_SCH46_PE1
|
||||
PB_SCH46_PE2
|
||||
BBGAB
|
||||
W
|
||||
PB_SCH46_PKGREL_PB1
|
||||
SOLPB_SCH46_PKGREL_SOL1
|
||||
PB_SCH48_PE1
|
||||
PB_SCH48_PE2
|
||||
BBGAB
|
||||
W
|
||||
PB_SCH48_PKGREL_PB1
|
||||
SOLPB_SCH48_PKGREL_SOL1
|
||||
PB_SCH52_PE1
|
||||
PB_SCH52_PE2
|
||||
BBGAB
|
||||
W
|
||||
PB_SCH52_PKGREL_PB1
|
||||
SOLPB_SCH52_PKGREL_SOL1
|
||||
PB_SCH56_PE1
|
||||
PB_SCH56_PE2
|
||||
BBGAB
|
||||
WPB_SCH56_PKGREL_PB1
|
||||
SOLPB_SCH56_PKGREL_SOL1
|
||||
PB_SCH60_PE1
|
||||
PB_SCH60_PE2
|
||||
BBGAB
|
||||
WPB_SCH60_PKGREL_PB1
|
||||
SOL
|
||||
PB_SCH60_PKGREL_SOL1
|
||||
PB_SCH63_PE1
|
||||
PB_SCH63_PE2
|
||||
BBGAB
|
||||
WPB_SCH63_PKGREL_PB1
|
||||
SOL
|
||||
PB_SCH63_PKGREL_SOL1
|
||||
PB_SCH67_PE1
|
||||
PB_SCH67_PE2
|
||||
BBGAB
|
||||
WPB_SCH67_PKGREL_PB1
|
||||
SOL
|
||||
PB_SCH67_PKGREL_SOL1
|
||||
PB_SCH71_PE1
|
||||
PB_SCH71_PE2
|
||||
BBGAB
|
||||
W
|
||||
PB_SCH71_PKGREL_PB1
|
||||
SOLPB_SCH71_PKGREL_SOL1
|
||||
PB_SCH74_PE1
|
||||
PB_SCH74_PE2
|
||||
BBGAB
|
||||
WPB_SCH74_PKGREL_PB1
|
||||
SOLPB_SCH74_PKGREL_SOL1
|
||||
MCM05
|
||||
MCM05
|
||||
387
projects/MTN6/extracted_texts/MTN6_SYSDL-MCM06.txt
Normal file
387
projects/MTN6/extracted_texts/MTN6_SYSDL-MCM06.txt
Normal file
@ -0,0 +1,387 @@
|
||||
ST 4.0kW 1.4375
|
||||
CL
|
||||
ST 1.5kW 1.4375
|
||||
12'-11"
|
||||
12'-11"
|
||||
S02-101CH2S02-101CH4S02-101CH6S02-101CH8S02-101CH10S02-101CH12S02-101CH14S02-101CH16S02-101CH18S02-101CH20S02-101CH22S02-101CH24S02-101CH26S02-101CH28S02-101CH30
|
||||
S02-101CH1S02-101CH3S02-101CH5S02-101CH7S02-101CH9S02-101CH11S02-101CH13S02-101CH15S02-101CH17S02-101CH19S02-101CH21S02-101CH23S02-101CH25S02-101CH27S02-101CH29
|
||||
NCS2-050-CH2NCS2-050-CH4NCS2-050-CH6NCS2-050-CH8NCS2-050-CH10NCS2-050-CH12NCS2-050-CH14NCS2-050-CH16NCS2-050-CH18NCS2-050-CH20NCS2-050-CH22NCS2-050-CH24NCS2-050-CH26NCS2-050-CH28NCS2-050-CH30
|
||||
NCS2-050-CH1NCS2-050-CH3NCS2-050-CH5NCS2-050-CH7NCS2-050-CH9NCS2-050-CH11NCS2-050-CH13NCS2-050-CH15NCS2-050-CH17NCS2-050-CH19NCS2-050-CH21NCS2-050-CH23NCS2-050-CH25NCS2-050-CH27NCS2-050-CH29
|
||||
NCP1_9_VFD12HP350 FPM
|
||||
NCP1_10B_VFD12HP350 FPMNCP1_10A_VFD12HP350 FPM
|
||||
NCP1_11_VFD12HP350 FPMNCP1_12_VFD12HP350 FPMNCP1_13_VFD12HP350 FPM
|
||||
NCP1_14A_VFD12HP350 FPMNCP1_14B_VFD12HP350 FPMNCP1_14C_VFD12HP350 FPM
|
||||
NCP1_15_VFD17.5HP350 FPM
|
||||
NCP1_16_VFD15HP350 FPMNCP1_17_VFD12HP350 FPMNCP1_18A_VFD12HP350 FPM
|
||||
NCP1_19_VFD12HP350 FPM
|
||||
NCP1_20_VFD15HP300 FPM
|
||||
NCS1_1_VFD12HP300 FPMNCS1_2_VFD12HP300 FPMNCS1_3_VFD15HP300 FPM
|
||||
NCS1_4_VFD12HP300 FPM
|
||||
NCS1_5B_VFD12HP300 FPMNCS1_5A_VFD12HP300 FPM
|
||||
NCS1_6_VFD12HP240 FPMNCS1_7_VFD12HP240 FPMNCS1_8_VFD12HP240 FPMNCS1_9_VFD12HP240 FPMS02_1_VFD130HP250 FPM
|
||||
NCP1_21_VFD17.5HP300 FPM
|
||||
NCP2_1_VFD15HP300 FPMNCS2_2_VFD12HP300 FPM
|
||||
NCS2_3A_VFD12HP300 FPM
|
||||
NCS2_4_VFD12HP240 FPMNCS2_5_VFD12HP240 FPMNCS2_6_VFD12HP240 FPMNCS2_7_VFD12HP240 FPM
|
||||
WGS02_102CH_ER1
|
||||
S02_102CH_PE1
|
||||
S02_102CH_PE2
|
||||
SNDRCV
|
||||
S02_1_LRPE1
|
||||
MCM06
|
||||
SNDRCV
|
||||
S02_1_LRPE2
|
||||
MCM06
|
||||
RBB
|
||||
EPCNCP1_9_EPC2RBB
|
||||
EPCNCP1_15_EPC1RBB
|
||||
EPCNCP1_15_EPC2ABB
|
||||
NCP1_20_PE1(INFEED PRODUCT SENSOR)
|
||||
NCP1_20_PE3(OUTFEED PRODUCT SENSOR)
|
||||
NCP1_20_PE2(IDLE DEBRIS SENSOR)
|
||||
NCP1_20_PE4(DRIVE END DEBRIS/SPROCKET ENGAGEMENT SENSOR)
|
||||
NCP1_20_APS1APSNCP1_20_SOL1SOLNCP1_20_SOL2SOL
|
||||
EPCNCP1_21_EPC1RBB
|
||||
RGNCP1_21_SS1
|
||||
EPCNCP1_21_EPC2
|
||||
RG NCP1_21_SS2RBB
|
||||
EPCNCS1_4_EPC4RBB
|
||||
EPCNCS1_4_EPC2RBB
|
||||
WNCP1_16_JR1ABB
|
||||
WNCS1_3_JR1ABB
|
||||
EPCNCS2_2_EPC2RBB
|
||||
EPCNCS2_2_EPC1RBBRGNCS2_2_SS1
|
||||
BBBGBBBG
|
||||
WS02_1_JR2
|
||||
A
|
||||
WS02_1_JR1
|
||||
S02_1_JPE1S02_1CH_JPE1
|
||||
HBBBA
|
||||
EPCNCS1_4_EPC3
|
||||
EPCNCS1_4_EPC1
|
||||
WNCP1_16_JR2R
|
||||
GNCP1_9_S1
|
||||
GNCP1_9_S2
|
||||
GNCP1_15_S1
|
||||
GNCP1_15_S2
|
||||
GNCS1_4_S1
|
||||
GNCS1_4_S2EPCS02_1_EPC2
|
||||
EPCS02_1_EPC1
|
||||
NCP1_11_ENC1NCP1_12_ENC1NCP1-13-ENC1 NCP1_15_ENC1
|
||||
NCP1_17_ENC1
|
||||
NCP1_19_ENC1
|
||||
NCS1_2_ENC1
|
||||
NCS1_4_ENC1NCS1_6_ENC1NCS1_7_ENC1NCS1_8_ENC1NCS1_9_ENC1
|
||||
NCS2_7_ENC1NCS2_6_ENC1NCS2_5_ENC1NCS2_4_ENC1NCS2_2_ENC1
|
||||
NCP1_21_ENC1
|
||||
NCP1_15_JPE1
|
||||
NCP1_17_TPE1
|
||||
NCS1_1_TPE1
|
||||
NCS1_4_TPE1
|
||||
NCS2_2_TPE1
|
||||
NCP1_21_TPE1
|
||||
NCP1_9_TPE1NCP_11_TPE1
|
||||
V
|
||||
ST 4.0kW 1.4375
|
||||
CL
|
||||
ST 1.5kW 1.4375
|
||||
S02-101CH2S02-101CH4S02-101CH6S02-101CH8S02-101CH10S02-101CH12S02-101CH14S02-101CH16S02-101CH18S02-101CH20S02-101CH22S02-101CH24S02-101CH26S02-101CH28S02-101CH30
|
||||
S02-101CH1S02-101CH3S02-101CH5S02-101CH7S02-101CH9S02-101CH11S02-101CH13S02-101CH15S02-101CH17S02-101CH19S02-101CH21S02-101CH23S02-101CH25S02-101CH27S02-101CH29
|
||||
NCS2-050-CH2NCS2-050-CH4NCS2-050-CH6NCS2-050-CH8NCS2-050-CH10NCS2-050-CH12NCS2-050-CH14NCS2-050-CH16NCS2-050-CH18NCS2-050-CH20NCS2-050-CH22NCS2-050-CH24NCS2-050-CH26NCS2-050-CH28NCS2-050-CH30
|
||||
NCS2-050-CH1NCS2-050-CH3NCS2-050-CH5NCS2-050-CH7NCS2-050-CH9NCS2-050-CH11NCS2-050-CH13NCS2-050-CH15NCS2-050-CH17NCS2-050-CH19NCS2-050-CH21NCS2-050-CH23NCS2-050-CH25NCS2-050-CH27NCS2-050-CH29
|
||||
EPCNCP1_9_EPC1
|
||||
RGNCS2_2_SS2
|
||||
NCS2_DPM1MCM06
|
||||
NCS1_DPM1MCM06
|
||||
NCP_DPM3MCM06
|
||||
NCP_DPM2MCM06NCP_11_TPE2NCP1_12_TPE1NCP1_13_TPE1NCP1_15_TPE1
|
||||
NCP1_14D_VFD12HP350 FPM
|
||||
NCP1_17_TPE2
|
||||
NCP1_18B_VFD12HP350 FPMNCP1_19_TPE1
|
||||
NCP1_19_TPE2
|
||||
NCS1_2_JPE1
|
||||
NCS1_4_TPE2
|
||||
NCS1_6_TPE1NCS1_6_TPE2NCS1_7_TPE1NCS1_8_TPE1NCS1_9_TPE1S02_104CH_FIOH1
|
||||
S02_1_FIO1S02_104CH_PE1
|
||||
S02_104CH_PE2
|
||||
S02_106CH_PE1
|
||||
S02_106CH_PE2
|
||||
S02_108CH_PE1
|
||||
S02_108CH_PE2
|
||||
S02_110CH_PE1
|
||||
S02_110CH_PE2
|
||||
S02_112CH_PE1
|
||||
S02_112CH_PE2
|
||||
S02_114CH_PE1
|
||||
S02_114CH_PE2
|
||||
S02_116CH_PE1
|
||||
S02_116CH_PE2
|
||||
S02_118CH_PE1
|
||||
S02_118CH_PE2
|
||||
S02_120CH_PE1
|
||||
S02_120CH_PE2
|
||||
S02_122CH_PE1
|
||||
S02_122CH_PE2
|
||||
S02_124CH_PE1
|
||||
S02_124CH_PE2
|
||||
S02_126CH_PE1
|
||||
S02_126CH_PE2
|
||||
S02_128CH_PE1
|
||||
S02_128CH_PE2
|
||||
S02_130CH_PE1
|
||||
S02_130CH_PE2
|
||||
S02_101CH_PE1
|
||||
S02_101CH_PE2BBBGA
|
||||
WGS02_101CH_ER1
|
||||
S02_103CH_FIOH1S02_103CH_PE1
|
||||
S02_103CH_PE2
|
||||
S02_105CH_PE1
|
||||
S02_105CH_PE2
|
||||
S02_107CH_PE1
|
||||
S02_107CH_PE2
|
||||
S02_109CH_PE1
|
||||
S02_109CH_PE2
|
||||
S02_111CH_PE1
|
||||
S02_111CH_PE2
|
||||
S02_113CH_PE1
|
||||
S02_113CH_PE2
|
||||
S02_115CH_PE1
|
||||
S02_115CH_PE2
|
||||
S02_117CH_PE1
|
||||
S02_117CH_PE2
|
||||
S02_119CH_PE1
|
||||
S02_119CH_PE2
|
||||
S02_121CH_PE1
|
||||
S02_121CH_PE2
|
||||
S02_123CH_PE1
|
||||
S02_123CH_PE2
|
||||
S02_125CH_PE1
|
||||
S02_125CH_PE2
|
||||
S02_127CH_PE1
|
||||
S02_127CH_PE2
|
||||
S02_129CH_PE1
|
||||
S02_129CH_PE2 BBBG
|
||||
WGS02_103CH_ER1WGS02_105CH_ER1WGS02_107CH_ER1WGS02_109CH_ER1WGS02_111CH_ER1WGS02_113CH_ER1WGS02_115CH_ER1WGS02_117CH_ER1WGS02_119CH_ER1WGS02_121CH_ER1WGS02_123CH_ER1WGS02_125CH_ER1WGS02_127CH_ER1WGS02_129CH_ER1
|
||||
WGS02_104CH_ER1WGS02_106CH_ER1WGS02_108CH_ER1WGS02_110CH_ER1WGS02_112CH_ER1WGS02_114CH_ER1WGS02_116CH_ER1WGS02_118CH_ER1WGS02_120CH_ER1WGS02_122CH_ER1WGS02_124CH_ER1WGS02_126CH_ER1WGS02_128CH_ER1WGS02_130CH_ER1
|
||||
SNDRCV
|
||||
S02_1_LRPE3
|
||||
MCM06
|
||||
SNDRCV
|
||||
S02_1_LRPE4
|
||||
MCM06
|
||||
WS02_1_JR4WS02_1_JR3
|
||||
SNDRCV
|
||||
S02_1_LRPE5
|
||||
MCM06
|
||||
SNDRCV
|
||||
S02_1_LRPE6
|
||||
MCM06
|
||||
WS02_1_JR6WS02_1_JR5
|
||||
SNDRCV
|
||||
S02_1_LRPE7
|
||||
MCM06
|
||||
SNDRCV
|
||||
S02_1_LRPE8
|
||||
MCM06
|
||||
WS02_1_JR8WS02_1_JR7
|
||||
SNDRCV
|
||||
S02_1_LRPE9
|
||||
MCM06
|
||||
SNDRCV
|
||||
S02_1_LRPE10
|
||||
MCM06
|
||||
WS02_1_JR10WS02_1_JR9
|
||||
BBBGA
|
||||
BBBGA
|
||||
BBBGA
|
||||
BBBGA
|
||||
BBBGA
|
||||
BBBGA
|
||||
BBBGA
|
||||
BBBGA
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
S02_108CH_FIOH1
|
||||
S02_107CH_FIOH1
|
||||
S02_112CH_FIOH1
|
||||
S02_111CH_FIOH1
|
||||
S02_116CH_FIOH1
|
||||
S02_115CH_FIOH1
|
||||
S02_120CH_FIOH1
|
||||
S02_119CH_FIOH1
|
||||
S02_124CH_FIOH1
|
||||
S02_123CH_FIOH1
|
||||
S02_128CH_FIOH1
|
||||
S02_127CH_FIOH1
|
||||
S02_1_FIO2S02_1_FIO3S02_1_FIO4S02_1_FIO5S02_1_FIO6S02_1_FIO7S02_1_FIO8
|
||||
S02_129CH_FIOH1
|
||||
S02_2_VFD130HP250 FPM
|
||||
WGS02_202CH_ER1
|
||||
S02_202CH_PE1
|
||||
S02_202CH_PE2
|
||||
SNDRCV
|
||||
S02_2_LRPE1
|
||||
MCM06
|
||||
SNDRCV
|
||||
S02_2_LRPE2
|
||||
MCM06
|
||||
BBBGBBBG
|
||||
WS02_2_JR2
|
||||
A
|
||||
WS02_2_JR1
|
||||
S02_2_JPE1S02_2CH_JPE1
|
||||
HBBBA
|
||||
NCS2_050_PE1
|
||||
EPCS02_2_EPC2
|
||||
EPCS02_2_EPC1S02_204CH_FIOH1
|
||||
S02_2_FIO1S02_204CH_PE1
|
||||
S02_204CH_PE2
|
||||
S02_206CH_PE1
|
||||
S02_206CH_PE2
|
||||
S02_208CH_PE1
|
||||
S02_208CH_PE2
|
||||
S02_210CH_PE1
|
||||
S02_210CH_PE2
|
||||
S02_212CH_PE1
|
||||
S02_212CH_PE2
|
||||
S02_214CH_PE1
|
||||
S02_214CH_PE2
|
||||
S02_216CH_PE1
|
||||
S02_216CH_PE2
|
||||
S02_218CH_PE1
|
||||
S02_218CH_PE2
|
||||
S02_220CH_PE1
|
||||
S02_220CH_PE2
|
||||
S02_222CH_PE1
|
||||
S02_222CH_PE2
|
||||
S02_224CH_PE1
|
||||
S02_224CH_PE2
|
||||
S02_226CH_PE1
|
||||
S02_226CH_PE2
|
||||
S02_228CH_PE1
|
||||
S02_228CH_PE2
|
||||
S02_230CH_PE1
|
||||
S02_230CH_PE2
|
||||
S02_201CH_PE1
|
||||
S02_201CH_PE2BBBGA
|
||||
WGS02_201CH_ER1
|
||||
S02_203CH_FIOH1S02_203CH_PE1
|
||||
S02_203CH_PE2
|
||||
S02_205CH_PE1
|
||||
S02_205CH_PE2
|
||||
S02_207CH_PE1
|
||||
S02_207CH_PE2
|
||||
S02_209CH_PE1
|
||||
S02_209CH_PE2
|
||||
S02_211CH_PE1
|
||||
S02_211CH_PE2
|
||||
S02_213CH_PE1
|
||||
S02_213CH_PE2
|
||||
S02_215CH_PE1
|
||||
S02_215CH_PE2
|
||||
S02_217CH_PE1
|
||||
S02_217CH_PE2
|
||||
S02_219CH_PE1
|
||||
S02_219CH_PE2
|
||||
S02_221CH_PE1
|
||||
S02_221CH_PE2
|
||||
S02_223CH_PE1
|
||||
S02_223CH_PE2
|
||||
S02_225CH_PE1
|
||||
S02_225CH_PE2
|
||||
S02_227CH_PE1
|
||||
S02_227CH_PE2
|
||||
S02_229CH_PE1
|
||||
S02_229CH_PE2 BBBG
|
||||
WGS02_203CH_ER1WGS02_205CH_ER1WGS02_207CH_ER1WGS02_209CH_ER1WGS02_211CH_ER1WGS02_213CH_ER1WGS02_215CH_ER1WGS02_217CH_ER1WGS02_219CH_ER1WGS02_221CH_ER1WGS02_223CH_ER1WGS02_225CH_ER1WGS02_227CH_ER1WGS02_229CH_ER1
|
||||
WGS02_204CH_ER1WGS02_206CH_ER1WGS02_208CH_ER1WGS02_210CH_ER1WGS02_212CH_ER1WGS02_214CH_ER1WGS02_216CH_ER1WGS02_218CH_ER1WGS02_220CH_ER1WGS02_222CH_ER1WGS02_224CH_ER1WGS02_226CH_ER1WGS02_228CH_ER1WGS02_230CH_ER1
|
||||
SNDRCV
|
||||
S02_2_LRPE3
|
||||
MCM06
|
||||
SNDRCV
|
||||
S02_2_LRPE4
|
||||
MCM06
|
||||
WS02_2_JR4WS02_2_JR3
|
||||
SNDRCV
|
||||
S02_2_LRPE5
|
||||
MCM06
|
||||
SNDRCV
|
||||
S02_2_LRPE6
|
||||
MCM06
|
||||
WS02_2_JR6WS02_2_JR5
|
||||
SNDRCV
|
||||
S02_2_LRPE7
|
||||
MCM06
|
||||
SNDRCV
|
||||
S02_2_LRPE8
|
||||
MCM06
|
||||
WS02_2_JR8WS02_2_JR7
|
||||
SNDRCV
|
||||
S02_2_LRPE9
|
||||
MCM06
|
||||
SNDRCV
|
||||
S02_2_LRPE10
|
||||
MCM06
|
||||
WS02_2_JR10WS02_2_JR9
|
||||
BBBGA
|
||||
BBBGA
|
||||
BBBGA
|
||||
BBBGA
|
||||
BBBGA
|
||||
BBBGA
|
||||
BBBGA
|
||||
BBBGA
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
BBBG
|
||||
S02_208CH_FIOH1
|
||||
S02_207CH_FIOH1
|
||||
S02_212CH_FIOH1
|
||||
S02_211CH_FIOH1
|
||||
S02_216CH_FIOH1
|
||||
S02_215CH_FIOH1
|
||||
S02_220CH_FIOH1
|
||||
S02_219CH_FIOH1
|
||||
S02_224CH_FIOH1
|
||||
S02_223CH_FIOH1
|
||||
S02_228CH_FIOH1
|
||||
S02_227CH_FIOH1
|
||||
S02_2_FIO2S02_2_FIO3S02_2_FIO4S02_2_FIO5S02_2_FIO6S02_2_FIO7S02_2_FIO8
|
||||
S02_229CH_FIOH1
|
||||
NCP1_21_JPE1
|
||||
NCS2_2_TPE2
|
||||
NCS2_3B_VFD12HP300 FPMNCS2_4_TPE1NCS2_4_TPE2NCS2_5_TPE1NCS2_6_TPE1
|
||||
NCS2_7_TPE1
|
||||
MCM06
|
||||
MCM06
|
||||
449
projects/MTN6/extracted_texts/MTN6_SYSDL-MCM07.txt
Normal file
449
projects/MTN6/extracted_texts/MTN6_SYSDL-MCM07.txt
Normal file
@ -0,0 +1,449 @@
|
||||
BYAB_2_VFD15HP550 FPM BYAB_3_VFD15HP550 FPM
|
||||
BYAB_4_VFD13HP500 FPM
|
||||
BYAB_5_VFD15HP450 FPMBYAB_6_VFD13HP400 FPM
|
||||
BYAB_7_VFD17.5HP350 FPMBYAB_8_VFD15HP300 FPMBYAB_9_VFD12HP300 FPM
|
||||
BYAB_10_VFD13HP300 FPM
|
||||
BYAB_11_VFD13HP300 FPM
|
||||
BYAB_12_VFD17.5HP300 FPMBYAB_13_VFD110HP300 FPMBYAB_14_VFD110HP300 FPMBYAB_15_VFD13HP300 FPM
|
||||
BYAD_2_VFD13HP550 FPM BYAD_3_VFD17.5HP500 FPMBYAD_4_VFD15HP450 FPM
|
||||
BYAD_5_VFD17.5HP400 FPM
|
||||
BYAD_6_VFD13HP350 FPM BYAD_7_VFD110HP300 FPM
|
||||
BYAD_8_VFD110HP300 FPMBYAD_9_VFD13HP300 FPM
|
||||
BYAC_2_VFD13HP550 FPM BYAC_3_VFD17.5HP500 FPMBYAC_4_VFD15HP450 FPM
|
||||
BYAC_5_VFD15HP400 FPM
|
||||
BYAC_6_VFD13HP350 FPMBYAC_7_VFD110HP300 FPMBYAC_8_VFD110HP300 FPMBYAC_9_VFD13HP300 FPM
|
||||
BYAC_10_VFD15HP300 FPMBYAC_11_VFD13HP300 FPM
|
||||
ABB
|
||||
BYAC_2_JPE1
|
||||
SNDRCV
|
||||
BYA_LRPE1
|
||||
MCM07
|
||||
BYAD_2_JPE1
|
||||
BYAB_2_JPE1
|
||||
BYAC_2_TPE1 BYAC_3_JPE1
|
||||
BYAC_5_TPE1
|
||||
BYAC_5_JPE1BYAC_7_TPE1BYAC_7_TPE2
|
||||
BYAC_8_TPE1BYAC_9_TPE1
|
||||
BYAC_11_TPE1
|
||||
BYAD_3_JPE1
|
||||
BYAB_2_JPE2
|
||||
BYAD_2_TPE1
|
||||
BYAB_6_TPE1BYAB_6_TPE2
|
||||
BYAB_7_TPE1BYAB_8_JPE1
|
||||
BYAB_12_TPE1BYAB_12_TPE2BYAB_13_TPE1
|
||||
BYAB_14_TPE1BYAB_15_TPE1
|
||||
BYAB_10_TPE1
|
||||
BYAB_10_JPE1
|
||||
BYAB_4_TPE1
|
||||
BYAB_4_JPE1
|
||||
BYAD_5_TPE1
|
||||
BYAD_5_JPE1BYAD_7_TPE1 BYAD_7_TPE2
|
||||
BYAD_8_TPE1BYAD_9_TPE1
|
||||
EPCBYAB_15_EPC1RBB
|
||||
EPCBYAB_15_EPC2RBB
|
||||
R
|
||||
G
|
||||
BYAB_2_S1RBBGBYAB_2_S2
|
||||
ABBR
|
||||
ABBR
|
||||
RBB
|
||||
RBB
|
||||
EPCBYAD_9_EPC1RBBGBYAD_9_S1
|
||||
EPCBYAD_9_EPC2RBBGBYAD_9_S2
|
||||
EPCBYAC_11_EPC1
|
||||
ABBGBYAC_11_S2EPCBYAC_11_EPC2
|
||||
RBBGBYAC_11_S1
|
||||
GBYAC_2_S1
|
||||
GBYAD_2_S2
|
||||
GBYAC_2_S2
|
||||
G
|
||||
BYAD_2_S1
|
||||
V
|
||||
BYBD_2_VFD13HP550 FPM BYBD_3_VFD110HP550 FPM BYBD_4_VFD110HP450 FPM
|
||||
BYBD_5_VFD110HP400 FPM BYBD_6_VFD15HP350 FPM BYBD_7_VFD17.5HP300 FPM
|
||||
BYBD_8_VFD13HP300 FPM
|
||||
BYBD_9_VFD12HP300 FPM
|
||||
BYBD_10_VFD110HP300 FPM
|
||||
BYBD_11_VFD13HP300 FPM
|
||||
BYBD_12_VFD110HP300 FPM
|
||||
BYBD_13_VFD110HP300 FPM
|
||||
BYBD_14_VFD12HP300 FPM
|
||||
BYBC_2_VFD13HP550 FPM BYBC_3_VFD110HP500 FPM BYBC_4_VFD17.5HP450 FPM
|
||||
BYBC_5_VFD15HP400 FPM
|
||||
BYBC_6_VFD13HP350 FPM
|
||||
BYBC_7_VFD13HP300 FPM BYBC_8_VFD110HP300 FPM
|
||||
BYBC_9_VFD110HP300 FPMBYBC_10_VFD12HP300 FPM
|
||||
BYBA_2_VFD13HP550 FPM BYBA_4_VFD17.5HP450 FPM
|
||||
BYBA_5_VFD13HP400 FPM
|
||||
BYBA_9_VFD110HP300 FPM BYBA_10_VFD17.5HP300 FPMBYBA_11_VFD12HP300 FPMBYBA_12_VFD13HP300 FPM
|
||||
BYBA_13_VFD12HP300 FPM
|
||||
BYBA_14_VFD13HP300 FPMBYBA_15_VFD12HP300 FPM
|
||||
BYBC_2_JPE1
|
||||
BYBD_2_JPE1
|
||||
BYBC_2_TPE1
|
||||
BYBD_2_TPE1 BYBD_3_TPE1
|
||||
BYBC_3_TPE1
|
||||
BYBA_4_JPE1
|
||||
BYBC_4_JPE1
|
||||
BYBD_4_TPE1 BYBD_5_TPE1 BYBD_6_TPE1
|
||||
BYBD_7_JPE1
|
||||
BYBD_12_TPE1 BYBD_12_TPE2
|
||||
BYBD_13_TPE1BYBD_14_TPE1
|
||||
BYBA_10_TPE1
|
||||
BYBC_9_TPE1BYBC_10_TPE1BYBC_8_TPE1 BYBC_8_TPE2
|
||||
BYBA_10_JPE1BYBA_15_TPE1BYBA_15_TPE2
|
||||
BYBA_13_TPE1
|
||||
BYBC_6_JPE1
|
||||
BYBC_6_TPE1
|
||||
BYBD_9_TPE1
|
||||
BYBD_10_JPE1 EPCBYBD_14_EPC1RBBGBYBD_14_S1
|
||||
EPCBYBD_14_EPC2RBBGBYBD_14_S2
|
||||
EPCBYBC_10_EPC1RBB
|
||||
GBYBC_10_S1
|
||||
EPCBYBC_10_EPC2RBBGBYBC_10_S2
|
||||
EPCBYBA_15_EPC2
|
||||
EPCBYBA_15_EPC1BB
|
||||
GBYBA_15_S2RBB
|
||||
BYCD_2_VFD15HP400 FPMBYCD_3_VFD15HP380 FPMBYCD_4_VFD12HP450 FPM
|
||||
BYCD_5_VFD15HP400 FPM
|
||||
BYCD_6_VFD13HP400 FPMBYCD_7_VFD12HP300 FPM
|
||||
BYCD_8_VFD17.5HP300 FPM BYCD_9_VFD110HP300 FPM BYCD_10_VFD110HP300 FPM BYCD_11_VFD17.5HP300 FPMBYCD_12_VFD12HP300 FPM
|
||||
BYCB_2_VFD13HP550 FPMBYCB_3_VFD15HP500 FPM
|
||||
BYCB_4_VFD13HP450 FPM
|
||||
BYCB_5_VFD15HP400 FPM
|
||||
BYCB_6_VFD15HP350 FPMBYCB_7_VFD110HP300 FPMBYCB_8_VFD110HP300 FPM
|
||||
BYCB_9_VFD15HP300 FPMBYCB_10_VFD12HP300 FPM
|
||||
BYCA_2_VFD13HP550 FPMBYCA_3_VFD15HP500 FPM
|
||||
BYCA_4_VFD15HP450 FPM
|
||||
BYCA_5_VFD15HP400 FPM
|
||||
BYCA_6_VFD110HP350 FPM
|
||||
BYCA_7_VFD12HP300 FPMBYCA_8_VFD15HP300 FPMBYCA_9_VFD12HP300 FPM
|
||||
BYCD_2_JPE1
|
||||
SND RCVBYC_LRPE1MCM07
|
||||
BYCB_2_TPE1BYCB_3_JPE1
|
||||
BYCD_2_JPE2
|
||||
BYCD_7_TPE1
|
||||
BYCB_7_TPE1
|
||||
BYCA_5_TPE1
|
||||
BYCA_9_TPE2
|
||||
EPCBYCD_12_EPC1RBBGBYCD_12_S1
|
||||
EPCBYCD_12_EPC2RBBGBYCD_12_S2
|
||||
EPCBYCB_10_EPC1RBBGBYCB_10_S1
|
||||
EPCBYCB_10_EPC2RBBGBYCB_10_S2
|
||||
EPCBYCA_9_EPC1RBBGBYCA_9_S1
|
||||
EPCBYCA_9_EPC2RBBGBYCA_9_S2
|
||||
BYDB_2_VFD13HP550 FPM
|
||||
BYDB_3_VFD17.5HP500 FPMBYDB_4_VFD110HP450 FPMBYDB_5_VFD13HP400 FPMBYDB_6_VFD17.5HP350 FPMBYDB_7_VFD17.5HP300 FPMBYDB_8_VFD15HP300 FPMBYDB_9_VFD13HP300 FPMBYDB_10_VFD15HP300 FPM
|
||||
BYDB_11_VFD15HP300 FPM
|
||||
BYDB_12_VFD15HP300 FPMBYDB_13_VFD110HP300 FPMBYDB_14_VFD110HP300 FPMBYDB_15_VFD15HP300 FPMBYDB_16_VFD13HP300 FPM
|
||||
BYDA_2_VFD13HP550 FPMBYDA_3_VFD17.5HP500 FPMBYDA_4_VFD110HP450 FPM
|
||||
BYDA_5_VFD15HP400 FPM
|
||||
BYDA_6_VFD110HP350 FPM
|
||||
BYDA_7_VFD13HP300 FPMBYDA_8_VFD110HP300 FPMBYDA_9_VFD13HP300 FPM
|
||||
BYDC_2_VFD13HP550 FPMBYDC_3_VFD17.5HP500 FPMBYDC_4_VFD110HP450 FPM
|
||||
BYDC_5_VFD15HP400 FPM
|
||||
BYDC_6_VFD110HP350 FPM
|
||||
BYDC_7_VFD13HP300 FPM
|
||||
BYDC_8_VFD110HP300 FPMBYDC_9_VFD110HP300 FPM
|
||||
BYDC_10_VFD110HP300 FPMBYDC_11_VFD13HP300 FPM
|
||||
BYDC_12_VFD15HP300 FPMBYDC_13_VFD13HP300 FPM
|
||||
SND RCV
|
||||
BYD_LRPE1
|
||||
MCM07
|
||||
WBYD_JR1BYDB_2_TPE1BYDB_11_TPE1
|
||||
EPCBYDC_13_EPC1
|
||||
ABBGBYDC_13_S2EPCBYDC_13_EPC2
|
||||
RBBGBYDC_13_S1 EPCBYDA_9_EPC1RBBGBYDA_9_S1
|
||||
EPCBYDA_9_EPC2RBBGBYDA_9_S2
|
||||
EPCBYDB_16_EPC1RBBGBYDB_16_S1
|
||||
EPCBYDB_16_EPC2RBBGBYDB_16_S2
|
||||
EPCBYDA_8_EPC1
|
||||
EPCBYDA_8_EPC2ABBGBYDA_8_S2
|
||||
RBBGBYDA_8_S1
|
||||
RR
|
||||
R
|
||||
BBA
|
||||
WBYBA_5_JR1
|
||||
BBA
|
||||
WBYBC_5_JR1
|
||||
BBA
|
||||
WBYBC_7_JR1
|
||||
R
|
||||
BBA
|
||||
WBYCB_6_JR1
|
||||
BBA
|
||||
WBYAB_11_JR1
|
||||
BBA
|
||||
WBYDB_12_JR1
|
||||
BBA
|
||||
WBYCB_4_JR1
|
||||
BBA
|
||||
WBYAB_9_JR1
|
||||
BBA
|
||||
WBYDB_10_JR1
|
||||
BBA
|
||||
WBYCD_6_JR1
|
||||
BBA
|
||||
WBYCD_3_JR1
|
||||
BBA
|
||||
WBYBD_11_JR1
|
||||
BYBD_9_TPE2
|
||||
BBA
|
||||
WBYAD_6_JR1
|
||||
BBA
|
||||
WBYAD_4_JR1
|
||||
BBA
|
||||
WBYAC_4_JR1
|
||||
EPCBYDA_6_EPC2
|
||||
EPCBYDA_6_EPC1
|
||||
EPCBYDB_4_EPC1
|
||||
EPCBYDB_4_EPC2
|
||||
EPCBYDC_6_EPC1
|
||||
EPCBYDC_6_EPC2ABBGBYDA_6_S1R ABBGBYDC_6_S1
|
||||
R
|
||||
BBGBYDB_4_S2R
|
||||
BBGBYDB_4_S1R
|
||||
BBGBYDA_6_S2R BBGBYDC_6_S2R
|
||||
GBYBA_15_S1
|
||||
BBA
|
||||
WBYCA_8_JR1
|
||||
BBA
|
||||
WBYBA_12_JR1
|
||||
BBA
|
||||
WBYBD_8_JR1
|
||||
BBA
|
||||
WBYAB_5_JR1
|
||||
BBA
|
||||
WBYAB_3_JR1
|
||||
BYCD_4_TPE1
|
||||
BYCB_5_JPE1
|
||||
BYCB_5_TPE1
|
||||
BYAC_11_TPE2
|
||||
EPCBYAC_2_EPC1
|
||||
EPCBYAC_2_EPC2EPCBYAD_2_EPC1
|
||||
EPCBYAD_2_EPC2EPCBYAB_2_EPC2EPCBYAB_2_EPC1
|
||||
EPCBYAB_2_EPC4EPCBYAB_2_EPC3
|
||||
EPCBYDA_3_EPC1
|
||||
EPCBYDA_3_EPC2EPCBYDB_3_EPC1
|
||||
EPCBYDB_3_EPC2
|
||||
ABBR
|
||||
RBBGBYBC_3_S2
|
||||
G
|
||||
BYBC_3_S1EPCBYBC_3_EPC1
|
||||
EPCBYBC_3_EPC2ABBR
|
||||
RBBGBYBD_3_S2
|
||||
G
|
||||
BYBD_3_S1EPCBYBD_3_EPC1
|
||||
EPCBYBD_3_EPC2
|
||||
EPCBYCB_3_EPC1
|
||||
EPCBYCB_3_EPC2ABBR
|
||||
RBBGBYCB_3_S2
|
||||
GBYCB_3_S1
|
||||
BBR
|
||||
GBYCD_5_S1RBBGBYCD_5_S2
|
||||
ABBRGBYDA_3_S1
|
||||
ABBR
|
||||
GBYDB_3_S1RBBGBYDA_3_S2
|
||||
RBBGBYDB_3_S2
|
||||
2'-5" EL (PLTF2)TYP.
|
||||
2'-5" EL (PLTF2)
|
||||
11'-0" EL (PLTF1)9'-0" EL (PLTF1)19'-0'' EL (FLOOR)9'-0" EL (PLTF1)6'-8'' EL (PLTF2)2'-9" EL (PLTF2)
|
||||
7'-6" EL (PLTF2)
|
||||
7'-6" EL (PLTF2)2'-9" EL (PLTF2)
|
||||
2'-9" EL (PLTF2)
|
||||
X-SQ-43.1875_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
X-SQ-41.5_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
X-SQ-41.5_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
X-SQ-41.5_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
X-SQ-96_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
X-SQ-41.5_43-60-P2.5+
|
||||
ST 1.5kW 1.4375
|
||||
X-SQ-41.5_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
X-SQ-41.5_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
TRANSITION CHUTES FROMCROSSBELT TO CONVEYORSURFACE WITH 3'' DROP
|
||||
2'-5" EL (PLTF2)TYP.
|
||||
7'-6" EL (PLTF2)
|
||||
7'-6" EL (PLTF2)
|
||||
7'-6" EL (PLTF2)
|
||||
7'-6" EL (PLTF2)
|
||||
7'-6" EL (PLTF2)
|
||||
8'-8" EL (PLTF2)9'-0" EL (PLTF2)11'-0'' EL (PLTF1)
|
||||
5'-1" EL (PLTF1)2'-9" EL (PLTF2)
|
||||
X-SQ-41.5_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
X-SQ-41.5_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
X-SQ-41.5_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
X-SQ-41.5_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
X-SQ-41.5_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
X-SQ-41.5_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
X-SQ-41.5_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
X-SQ-41.5_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
2'-5" EL(PLTF2)
|
||||
2'-5" EL (PLTF2)TYP. (3) PLCS
|
||||
8'-0" EL (PLTF2)10'-4'' EL (PLTF1)TYP. (3) PLCS
|
||||
X-SQ-41.5_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
8'-0" EL (PLTF2)
|
||||
5'-8" EL (PLTF2)8'-0'' EL (PLTF1)
|
||||
10'-8" EL (PLTF2) 10'-8" EL (PLTF2)
|
||||
8'-0" EL (PLTF2)
|
||||
8'-0" EL (PLTF2)
|
||||
8'-0" EL (PLTF2) 8'-0" EL (PLTF2) 2'-9" EL (PLTF2)
|
||||
8'-0" EL (PLTF2)
|
||||
8'-0" EL (PLTF2)
|
||||
8'-0" EL (PLTF2)
|
||||
8'-0" EL (PLTF2) 8'-0" EL (PLTF2)2'-9" EL (PLTF2) 2'-9" EL (PLTF2)
|
||||
2'-9" EL (PLTF2)
|
||||
2'-9" EL (PLTF2)8'-0" EL (PLTF2) 8'-0" EL (PLTF2)
|
||||
X-SQ-43.1875_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
X-SQ-41.5_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
X-SQ-41.5_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
X-SQ-41.5_43-60-P2.5+
|
||||
ST 1.5kW 1.4375
|
||||
X-SQ-96_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
TRANSITION CHUTES FROMCROSSBELT TO CONVEYORSURFACE WITH 3'' DROP2'-5" EL(PLTF2)
|
||||
7'-4" EL(PLTF2)
|
||||
6'-3" EL(PLTF2) 10'-8" EL(PLTF2)
|
||||
JSA
|
||||
JSA
|
||||
2'-5" EL(PLTF2)
|
||||
X-SQ-43.1875_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
X-SQ-96_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
X-SQ-43.1875_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
X-SQ-41.5_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
X-SQ-41.5_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
X-SQ-96_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
2'-5" EL (PLTF2)TYP.
|
||||
8'-0" EL (PLTF2)TYP.
|
||||
X-SQ-41.5_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
X-SQ-41.5_43-90-P2.5+
|
||||
ST 4.0kW 1.4375
|
||||
3'-6" EL (PLTF3)
|
||||
7'-5" EL (PLTF3)11'-11'' EL (PLTF2)
|
||||
11'-11" EL (PLTF2)
|
||||
8'-8" EL (PLTF2)8'-8" EL (PLTF2)11'-0'' EL (PLTF1)
|
||||
11'-0" EL (PLTF1)
|
||||
11'-0" EL (PLTF1)11'-0" EL (PLTF1)
|
||||
2'-9" EL (PLTF2)5'-4'' EL (PLTF1)2'-9" EL (PLTF2)
|
||||
3'-6" EL (PLTF3)
|
||||
3'-6" EL (PLTF3)
|
||||
3'-6" EL (PLTF3)
|
||||
3'-6" EL (PLTF3)
|
||||
3'-6" EL (PLTF3)8'-0'' EL (PLTF2)8'-0" EL (PLTF2)2'-9" EL (PLTF2)2'-9" EL (PLTF2) 3'-6" EL (PLTF3)8'-0'' EL (PLTF2)
|
||||
2'-9" EL (PLTF2)
|
||||
STOP THE EPC AT 8'-3"
|
||||
STOP THE EPC AT 8'-3"
|
||||
BBA
|
||||
WBYAC_6_JR1
|
||||
BYD1_DPM1MCM07
|
||||
BYD1_DPM2MCM07
|
||||
BYD3_DPM1MCM07
|
||||
BYA1_DPM1MCM07
|
||||
BYA3_DPM1MCM07
|
||||
BYB1_DPM1MCM07
|
||||
BYB2_DPM1MCM07
|
||||
BYB3_DPM1MCM07
|
||||
BYC1_DPM1MCM07
|
||||
BYC3_DPM1MCM07
|
||||
MCM07
|
||||
BYAB_2_FIO1
|
||||
BYAD_2_FIO1
|
||||
BYAC_2_FIO1BYCA_2_FIO1
|
||||
BYCB_2_FIO1
|
||||
GBYAB_15_S2
|
||||
GBYAB_15_S1BYAB_14_FIO1
|
||||
BYAD_8_FIO1
|
||||
BYAC_11_FIO1
|
||||
BYBD_2_FIO1
|
||||
BYBD_14_FIO1
|
||||
BYBC_2_FIO1
|
||||
BYBC_10_FIO1
|
||||
BYBA_2_FIO1BYBA_2_JPE1BYBA_2_TPE1ABBR
|
||||
RBBGBYBA_3_S2
|
||||
G
|
||||
BYBA_3_S1EPCBYBA_3_EPC1
|
||||
EPCBYBA_3_EPC2 BYBA_3_VFD110HP500 FPMBYBA_3_TPE1
|
||||
BYBA_6_TPE1
|
||||
BYBA_6_VFD13HP350 FPM
|
||||
BYBA_6_JPE1
|
||||
BBA
|
||||
WBYBA_7_JR1
|
||||
BYBA_7_VFD13HP300 FPMBYBA_8_TPE1 BYBA_8_VFD110HP300 FPM
|
||||
BYBA_8_TPE2 BYBA_9_TPE1
|
||||
BYBA_13_JPE1BBA
|
||||
WBYBA_14_JR1
|
||||
BYBA_15_FIO1
|
||||
EPCBYCD_5_EPC2
|
||||
EPCBYCD_5_EPC1
|
||||
BYCD_4_TPE2
|
||||
BYCD_5_JPE1
|
||||
BYCD_7_TPE2
|
||||
BYCD_8_TPE1 BYCD_9_TPE1 BYCD_10_TPE1 BYCD_11_TPE1BYCD_12_TPE1BYCD_11_FIO1
|
||||
BYCB_2_JPE1
|
||||
BYCA_2_JPE1
|
||||
BYCB_7_TPE2BYCB_8_TPE1BYCB_9_TPE1BYCB_10_TPE1
|
||||
BYCB_9_FIO1
|
||||
BYCA_2_TPE1
|
||||
EPCBYCA_3_EPC1
|
||||
EPCBYCA_3_EPC2ABBRRBB
|
||||
GBYCA_3_S2
|
||||
GBYCA_3_S1BYCA_3_JPE1
|
||||
BBA
|
||||
WBYCA_4_JR1 BYCA_5_TPE2 BYCA_6_TPE1BYCA_7_JPE1
|
||||
BYCA_9_TPE1
|
||||
SND RCV
|
||||
BYB_LRPE1
|
||||
MCM07
|
||||
WBYB_JR1
|
||||
WBYC_JR1WBYA_JR1
|
||||
BYDB_2_FIO1
|
||||
BYDA_2_FIO1
|
||||
BYDC_2_FIO1BYDC_2_JPE1
|
||||
BYDA_2_JPE1
|
||||
BYDB_2_JPE1
|
||||
BYDB_3_TPE1BYDB_4_TPE1BYDB_5_TPE1BYDB_6_TPE1BYDB_7_TPE1BYDB_8_TPE1BYDB_9_JPE1
|
||||
BYDB_11_JPE1BYDB_13_TPE1BYDB_13_TPE2BYDB_14_TPE1
|
||||
BYDB_15_TPE1BYDB_16_TPE1
|
||||
BYDA_2_TPE1BYDA_3_TPE1BYDA_4_JPE1
|
||||
BYDA_6_TPE1
|
||||
BYDA_6_FIO1
|
||||
BYDA_6_JPE1BYDA_8_TPE1BYDA_8_FIO1BYDA_9_TPE1BYDA_8_TPE2BYDA_8_FIO2
|
||||
EPCBYDC_3_EPC1
|
||||
EPCBYDC_3_EPC2ABBRGBYDC_3_S1RBBGBYDC_3_S2BYDC_2_TPE1BYDC_3_TPE1BYDC_4_JPE1
|
||||
BYDC_6_FIO1
|
||||
BYDC_6_TPE1
|
||||
BYDC_6_JPE1
|
||||
BYDC_8_FIO1
|
||||
BYDC_8_TPE1
|
||||
EPCBYDC_8_EPC1
|
||||
EPCBYDC_8_EPC2ABB
|
||||
GBYDC_8_S2
|
||||
RBBGBYDC_8_S1RBYDC_8_TPE2BYDC_9_TPE1
|
||||
BYDC_10_TPE1BYDC_11_JPE1BYDC_13_TPE1
|
||||
BYDC_13_TPE2
|
||||
MCM07
|
||||
1738
projects/MTN6/manifest.csv
Normal file
1738
projects/MTN6/manifest.csv
Normal file
File diff suppressed because it is too large
Load Diff
BIN
projects/MTN6/pdfs/MTN6_SYSDL-MCM01.pdf
Normal file
BIN
projects/MTN6/pdfs/MTN6_SYSDL-MCM01.pdf
Normal file
Binary file not shown.
BIN
projects/MTN6/pdfs/MTN6_SYSDL-MCM02.pdf
Normal file
BIN
projects/MTN6/pdfs/MTN6_SYSDL-MCM02.pdf
Normal file
Binary file not shown.
BIN
projects/MTN6/pdfs/MTN6_SYSDL-MCM03.pdf
Normal file
BIN
projects/MTN6/pdfs/MTN6_SYSDL-MCM03.pdf
Normal file
Binary file not shown.
BIN
projects/MTN6/pdfs/MTN6_SYSDL-MCM04.pdf
Normal file
BIN
projects/MTN6/pdfs/MTN6_SYSDL-MCM04.pdf
Normal file
Binary file not shown.
BIN
projects/MTN6/pdfs/MTN6_SYSDL-MCM05.pdf
Normal file
BIN
projects/MTN6/pdfs/MTN6_SYSDL-MCM05.pdf
Normal file
Binary file not shown.
BIN
projects/MTN6/pdfs/MTN6_SYSDL-MCM06.pdf
Normal file
BIN
projects/MTN6/pdfs/MTN6_SYSDL-MCM06.pdf
Normal file
Binary file not shown.
BIN
projects/MTN6/pdfs/MTN6_SYSDL-MCM07.pdf
Normal file
BIN
projects/MTN6/pdfs/MTN6_SYSDL-MCM07.pdf
Normal file
Binary file not shown.
2
projects/MTN6/project_info.txt
Normal file
2
projects/MTN6/project_info.txt
Normal file
@ -0,0 +1,2 @@
|
||||
ProjectName: MTN6
|
||||
RepoURL: http://192.168.5.191:3000/LCI/MTN6.git
|
||||
1
projects/MTN6/repo
Submodule
1
projects/MTN6/repo
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 456de12cca56c09bc1881660b163ac3b5dff593a
|
||||
@ -28,6 +28,15 @@ body { padding: 20px; padding-bottom: 60px; /* Account for status bar */ }
|
||||
margin: 0 auto; /* Center the canvas */
|
||||
cursor: pointer; /* Indicate clickable */
|
||||
}
|
||||
|
||||
/* NEW: Style for overall charts */
|
||||
.overall-chart-canvas {
|
||||
max-width: 300px; /* Adjust as needed */
|
||||
max-height: 300px; /* Adjust as needed */
|
||||
margin: 0 auto; /* Center the canvas */
|
||||
cursor: pointer; /* Indicate clickable */
|
||||
}
|
||||
|
||||
#scada-panels-progress, #drawing-panels-progress {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); /* Responsive grid */
|
||||
|
||||
149
static/js/api.js
Normal file
149
static/js/api.js
Normal file
@ -0,0 +1,149 @@
|
||||
// --- API Interaction Functions ---
|
||||
|
||||
/**
|
||||
* Makes a fetch request and handles common scenarios like JSON parsing and HTTP errors.
|
||||
* @param {string} url - The URL to fetch.
|
||||
* @param {object} options - Fetch options (method, headers, body, etc.).
|
||||
* @returns {Promise<object>} - A promise that resolves with the parsed JSON data.
|
||||
* @throws {Error} - Throws an error if the fetch fails or the response is not ok.
|
||||
*/
|
||||
async function fetchApi(url, options = {}) {
|
||||
try {
|
||||
const response = await fetch(url, options);
|
||||
|
||||
// Try to parse JSON regardless of status code for potential error details
|
||||
let data = {};
|
||||
try {
|
||||
// Handle potential non-JSON responses (e.g., empty body on 204)
|
||||
const text = await response.text();
|
||||
if (text) {
|
||||
data = JSON.parse(text);
|
||||
} else {
|
||||
data = { success: response.ok, message: response.statusText }; // Basic success/failure if body empty
|
||||
}
|
||||
} catch (e) {
|
||||
console.warn(`Could not parse JSON response from ${url}. Status: ${response.status}`);
|
||||
// If JSON parsing fails, still check the HTTP status
|
||||
if (!response.ok) {
|
||||
throw new Error(options.errorMessage || `Request failed with status ${response.status}. No details available.`);
|
||||
}
|
||||
// If response was OK but JSON failed, might be acceptable depending on endpoint
|
||||
// Or return a default success object if appropriate
|
||||
data = { success: true, message: "Operation successful, but response was not valid JSON." };
|
||||
}
|
||||
|
||||
if (!response.ok) {
|
||||
// Use the message from parsed JSON if available, otherwise default error
|
||||
throw new Error(data.message || options.errorMessage || `Request failed with status ${response.status}`);
|
||||
}
|
||||
|
||||
// Ensure the returned data always has a `success` property if not present
|
||||
if (typeof data.success === 'undefined') {
|
||||
data.success = true; // Assume success if HTTP status was OK and no success flag found
|
||||
}
|
||||
|
||||
return data;
|
||||
} catch (error) {
|
||||
console.error(`API Error (${options.method || 'GET'} ${url}):`, error);
|
||||
// Re-throw the error so the calling function can handle it (e.g., display to user)
|
||||
throw error; // Keep original error type/message if possible
|
||||
}
|
||||
}
|
||||
|
||||
// --- Specific API Call Functions ---
|
||||
|
||||
/**
|
||||
* Fetches the list of PDF files for a given project.
|
||||
* @param {string} projectName - The name of the project.
|
||||
* @returns {Promise<object>} - The API response (e.g., { success: true, files: [...] }).
|
||||
*/
|
||||
async function apiListPdfs(projectName) {
|
||||
return fetchApi(`/list_pdfs/${encodeURIComponent(projectName)}`, {
|
||||
errorMessage: 'Failed to list PDF files'
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes a specific PDF file from a project.
|
||||
* @param {string} projectName - The name of the project.
|
||||
* @param {string} filename - The name of the PDF file to delete.
|
||||
* @returns {Promise<object>} - The API response (e.g., { success: true, message: "..." }).
|
||||
*/
|
||||
async function apiDeletePdf(projectName, filename) {
|
||||
return fetchApi(`/delete_pdf/${encodeURIComponent(projectName)}`, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify({ filename: filename }),
|
||||
errorMessage: 'Failed to delete PDF file'
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Uploads one or more PDF files to a project.
|
||||
* @param {string} projectName - The name of the project.
|
||||
* @param {FormData} formData - The FormData object containing the files.
|
||||
* @returns {Promise<object>} - The API response (e.g., { success: true, message: "..." }).
|
||||
*/
|
||||
async function apiUploadPdfs(projectName, formData) {
|
||||
return fetchApi(`/upload_pdfs/${encodeURIComponent(projectName)}`, {
|
||||
method: 'POST',
|
||||
body: formData, // FormData sets Content-Type automatically
|
||||
errorMessage: 'File upload failed'
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Triggers a background analysis for a specific project.
|
||||
* @param {string} projectName - The name of the project.
|
||||
* @returns {Promise<object>} - The API response (e.g., { success: true, message: "..." }).
|
||||
*/
|
||||
async function apiTriggerAnalysis(projectName) {
|
||||
return fetchApi(`/trigger_analysis/${encodeURIComponent(projectName)}`, {
|
||||
method: 'POST',
|
||||
errorMessage: 'Failed to trigger analysis'
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a new project.
|
||||
* @param {FormData} formData - The FormData object containing project details and files.
|
||||
* @returns {Promise<object>} - The API response (e.g., { success: true, message: "..." }).
|
||||
*/
|
||||
async function apiAddProject(formData) {
|
||||
return fetchApi('/add_project', {
|
||||
method: 'POST',
|
||||
body: formData,
|
||||
errorMessage: 'Failed to add project'
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes an entire project.
|
||||
* @param {string} projectName - The name of the project to delete.
|
||||
* @returns {Promise<object>} - The API response (e.g., { success: true, message: "..." }).
|
||||
*/
|
||||
async function apiDeleteProject(projectName) {
|
||||
return fetchApi(`/delete_project/${encodeURIComponent(projectName)}`, {
|
||||
method: 'POST', // Backend expects POST
|
||||
errorMessage: 'Failed to delete project'
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Uploads and overwrites the manifest file for a project.
|
||||
* @param {string} projectName - The name of the project.
|
||||
* @param {FormData} formData - The FormData object containing the manifest file.
|
||||
* @returns {Promise<object>} - The API response (e.g., { success: true, message: "..." }).
|
||||
*/
|
||||
async function apiUploadManifest(projectName, formData) {
|
||||
return fetchApi(`/upload_manifest/${encodeURIComponent(projectName)}`, {
|
||||
method: 'POST',
|
||||
body: formData,
|
||||
errorMessage: 'Failed to upload manifest'
|
||||
});
|
||||
}
|
||||
|
||||
// --- Export (if using modules in the future) ---
|
||||
// export { apiListPdfs, apiDeletePdf, apiUploadPdfs, apiTriggerAnalysis, apiAddProject, apiDeleteProject, apiUploadManifest };
|
||||
274
static/js/chartManager.js
Normal file
274
static/js/chartManager.js
Normal file
@ -0,0 +1,274 @@
|
||||
// --- Chart Management ---
|
||||
|
||||
// Keep chart instances internal to this module
|
||||
let chartInstancesScada = {};
|
||||
let chartInstancesDrawing = {};
|
||||
|
||||
// --- Chart Configurations ---
|
||||
const scadaChartLabels = ['Found in SCADA', 'Not Found in SCADA'];
|
||||
// const scadaChartColors = ['rgb(13, 110, 253)', 'rgb(220, 53, 69)']; // Removed
|
||||
const drawingChartLabels = ['Found in Drawing', 'Not Found in Drawing'];
|
||||
// const drawingChartColors = ['rgb(25, 135, 84)', 'rgb(220, 53, 69)']; // Removed
|
||||
|
||||
// Unified colors: Green for Found, Red for Not Found
|
||||
const commonChartColors = ['rgb(25, 135, 84)', 'rgb(220, 53, 69)'];
|
||||
|
||||
// --- Chart Click Handler ---
|
||||
// Note: This needs access to showDetailsModal, which might need to be passed or refactored.
|
||||
function handleChartClick(event, elements, chart, context) {
|
||||
if (elements.length > 0 && selectedProjectName) { // Relies on global selectedProjectName for now
|
||||
const clickedElementIndex = elements[0].index;
|
||||
const isOverallChart = chart.canvas.id.startsWith('overall-');
|
||||
const identifier = isOverallChart ? '__overall__' : chart.canvas.id.replace(`chart-${context}-`, '');
|
||||
const categoryType = clickedElementIndex === 0 ? 'found' : 'notFound';
|
||||
|
||||
// TODO: Refactor showDetailsModal call - currently global
|
||||
// showDetailsModal(selectedProjectName, identifier, categoryType, context);
|
||||
// Call modalManager function instead
|
||||
modalManagerShowDetails(selectedProjectName, identifier, categoryType, context);
|
||||
}
|
||||
}
|
||||
|
||||
// --- Generic Helper to create chart config ---
|
||||
// Note: Relies on global currentProjectData and selectedProjectName for tooltips
|
||||
function createChartConfig(chartCounts, total, context, identifier, projectName) {
|
||||
const labels = context === 'scada' ? scadaChartLabels : drawingChartLabels;
|
||||
// const colors = context === 'scada' ? scadaChartColors : drawingChartColors; // Use common colors instead
|
||||
const datasetLabel = context === 'scada' ? 'SCADA Match' : 'Drawing Match';
|
||||
|
||||
// Retrieve the correct project's progress data for tooltip calculation
|
||||
// TODO: Find a way to access state without global reliance (e.g., pass data in)
|
||||
const projectProgress = (currentProjectData[projectName] && currentProjectData[projectName].progress) ? currentProjectData[projectName].progress : {};
|
||||
|
||||
return {
|
||||
type: 'pie',
|
||||
data: {
|
||||
labels: labels,
|
||||
datasets: [{
|
||||
label: datasetLabel,
|
||||
data: chartCounts,
|
||||
backgroundColor: commonChartColors, // Use unified colors
|
||||
hoverOffset: 4
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
responsive: true,
|
||||
maintainAspectRatio: false,
|
||||
onClick: (event, elements, chart) => handleChartClick(event, elements, chart, context), // Pass context
|
||||
plugins: {
|
||||
legend: { display: false },
|
||||
tooltip: {
|
||||
callbacks: {
|
||||
label: function(ctxTooltip) {
|
||||
let label = ctxTooltip.label || '';
|
||||
if (label) label += ': ';
|
||||
const value = ctxTooltip.parsed;
|
||||
if (value !== null) label += value;
|
||||
// Use total passed for panel charts, access stored data for overall
|
||||
const chartTotal = (identifier === 'overall' && projectProgress.overall)
|
||||
? projectProgress.overall.total_csv
|
||||
: total;
|
||||
if (chartTotal && chartTotal > 0 && value !== null) {
|
||||
label += ` (${((value / chartTotal) * 100).toFixed(1)}%)`;
|
||||
}
|
||||
return label;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// --- Update Functions ---
|
||||
|
||||
/**
|
||||
* Updates or creates the overall progress chart for a context (scada/drawing).
|
||||
* @param {string} context - 'scada' or 'drawing'
|
||||
* @param {string} canvasId - The ID of the canvas element.
|
||||
* @param {Array<number>} chartCounts - The data array for the chart (e.g., [found, notFound]).
|
||||
* @param {number} total - The total number of items for percentage calculation.
|
||||
* @param {boolean} isVisible - Whether the section containing the chart is currently visible.
|
||||
*/
|
||||
function updateOverallChart(context, canvasId, chartCounts, total, isVisible) {
|
||||
console.log(`[ChartManager] updateOverallChart called for context: ${context}, canvasId: ${canvasId}`); // Log entry
|
||||
console.log(`[ChartManager] Received chartCounts: ${JSON.stringify(chartCounts)}, total: ${total}`); // Log data
|
||||
const chartInstances = context === 'scada' ? chartInstancesScada : chartInstancesDrawing;
|
||||
const chartKey = 'overall';
|
||||
// Find the parent container based on context
|
||||
const parentContainer = context === 'scada' ? uiElements.overallScadaProgress : uiElements.overallDrawingProgress;
|
||||
console.log(`[ChartManager] Parent container for ${context}:`, parentContainer); // Log container found
|
||||
|
||||
if (!parentContainer) {
|
||||
console.error(`[ChartManager] Parent container for overall ${context} chart not found.`);
|
||||
return;
|
||||
}
|
||||
|
||||
let canvas = document.getElementById(canvasId);
|
||||
console.log(`[ChartManager] Existing canvas found for ${canvasId}:`, canvas);
|
||||
|
||||
// Check if the found canvas is unusable (zero dimensions)
|
||||
if (canvas && (canvas.offsetWidth === 0 || canvas.offsetHeight === 0)) {
|
||||
console.warn(`[ChartManager] Found canvas ${canvasId} has zero dimensions. Removing and recreating.`);
|
||||
// Destroy the associated Chart.js instance if it exists
|
||||
if (chartInstances[chartKey]) {
|
||||
console.log(`[ChartManager] Destroying Chart.js instance for zero-dimension canvas ${canvasId}.`);
|
||||
chartInstances[chartKey].destroy();
|
||||
delete chartInstances[chartKey];
|
||||
}
|
||||
canvas.remove(); // Remove the faulty canvas element
|
||||
canvas = null; // Force recreation below
|
||||
}
|
||||
|
||||
// If canvas doesn't exist (or was removed), create and append it
|
||||
if (!canvas) {
|
||||
console.log(`[ChartManager] Canvas ${canvasId} needs creation.`);
|
||||
canvas = document.createElement('canvas');
|
||||
canvas.id = canvasId;
|
||||
canvas.className = 'overall-chart-canvas';
|
||||
parentContainer.innerHTML = ''; // Clear the container first before adding canvas
|
||||
parentContainer.appendChild(canvas);
|
||||
console.log(`[ChartManager] Canvas ${canvasId} created and appended.`);
|
||||
}
|
||||
|
||||
// Now canvas definitely exists (or we returned early)
|
||||
if (chartInstances[chartKey]) {
|
||||
// Update existing chart data if it changed
|
||||
if (JSON.stringify(chartInstances[chartKey].data.datasets[0].data) !== JSON.stringify(chartCounts)) {
|
||||
console.log(`Updating overall ${context} chart data.`);
|
||||
chartInstances[chartKey].data.datasets[0].data = chartCounts;
|
||||
chartInstances[chartKey].update('none'); // Update without animation
|
||||
}
|
||||
} else { // No existing chart instance, create new one
|
||||
// Create new chart
|
||||
console.log(`Creating overall ${context} chart.`);
|
||||
const ctx = canvas.getContext('2d');
|
||||
if (ctx) {
|
||||
chartInstances[chartKey] = new Chart(ctx, createChartConfig(chartCounts, total, context, chartKey, selectedProjectName)); // Relies on global selectedProjectName
|
||||
} else {
|
||||
console.error(`[ChartManager] Failed to get 2D context for canvas ${canvasId}.`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Updates or creates/destroys panel-specific charts for a context.
|
||||
* @param {string} context - 'scada' or 'drawing'
|
||||
* @param {HTMLElement} panelsContainer - The container element for panel charts.
|
||||
* @param {object} panelsData - The progress data object for all panels.
|
||||
* @param {boolean} isVisible - Whether the section containing the charts is currently visible.
|
||||
*/
|
||||
function updatePanelCharts(context, panelsContainer, panelsData, isVisible) {
|
||||
const chartInstances = context === 'scada' ? chartInstancesScada : chartInstancesDrawing;
|
||||
const incomingPanelNames = new Set(Object.keys(panelsData || {}).sort());
|
||||
const existingInstanceNames = new Set(Object.keys(chartInstances).filter(k => k !== 'overall'));
|
||||
|
||||
if (!isVisible) {
|
||||
// If section is not visible, destroy all existing panel charts for this context
|
||||
console.log(`[ChartManager] Destroying hidden panel charts for context: ${context}`);
|
||||
existingInstanceNames.forEach(panelName => {
|
||||
if (chartInstances[panelName]) {
|
||||
chartInstances[panelName].destroy();
|
||||
delete chartInstances[panelName];
|
||||
}
|
||||
});
|
||||
// Remove any dynamically created chart containers if section is hidden
|
||||
panelsContainer.querySelectorAll(`.chart-container[id^="chart-container-${context}-"]`).forEach(el => el.remove());
|
||||
if (!panelsContainer.querySelector('p')) { // Add placeholder if empty
|
||||
panelsContainer.innerHTML = '<p class="text-center fst-italic">Panel data hidden.</p>';
|
||||
}
|
||||
return; // Don't proceed further if the section is hidden
|
||||
}
|
||||
|
||||
// Clear placeholder/hidden message if we have data and are visible
|
||||
const placeholder = panelsContainer.querySelector('p');
|
||||
if(placeholder) placeholder.remove();
|
||||
|
||||
// Update/Create charts for incoming panels
|
||||
if (incomingPanelNames.size > 0) {
|
||||
incomingPanelNames.forEach(panelName => {
|
||||
const panel = panelsData[panelName];
|
||||
const panelTotal = (panel && panel.total) || 0;
|
||||
let panelChartCounts = [0, 0];
|
||||
|
||||
if (panel) {
|
||||
if (context === 'scada') {
|
||||
panelChartCounts = [(panel.found_both || 0) + (panel.found_scada_only || 0), (panel.found_drawing_only || 0) + (panel.missing_both || 0)];
|
||||
} else { // drawing
|
||||
panelChartCounts = [(panel.found_both || 0) + (panel.found_drawing_only || 0), (panel.found_scada_only || 0) + (panel.missing_both || 0)];
|
||||
}
|
||||
}
|
||||
|
||||
const chartKey = panelName;
|
||||
const canvasId = `chart-${context}-${panelName}`;
|
||||
const containerId = `chart-container-${context}-${panelName}`;
|
||||
|
||||
if (chartInstances[chartKey]) {
|
||||
// Update existing chart
|
||||
if (JSON.stringify(chartInstances[chartKey].data.datasets[0].data) !== JSON.stringify(panelChartCounts)) {
|
||||
chartInstances[chartKey].data.datasets[0].data = panelChartCounts;
|
||||
// Update tooltip data source if needed (or ensure createChartConfig handles it)
|
||||
chartInstances[chartKey].update('none');
|
||||
}
|
||||
} else {
|
||||
// Create new chart element and instance
|
||||
let container = document.getElementById(containerId);
|
||||
if (!container) {
|
||||
console.log(`Creating new ${context} panel elements and chart (visible) for: ${panelName}`);
|
||||
container = document.createElement('div');
|
||||
container.id = containerId;
|
||||
container.className = 'chart-container';
|
||||
container.innerHTML = `
|
||||
<span class="chart-label">${panelName}</span>
|
||||
<canvas id="${canvasId}" class="panel-chart-canvas"></canvas>
|
||||
`;
|
||||
panelsContainer.appendChild(container);
|
||||
}
|
||||
|
||||
const canvas = document.getElementById(canvasId);
|
||||
if (canvas) {
|
||||
const ctx = canvas.getContext('2d');
|
||||
chartInstances[chartKey] = new Chart(ctx, createChartConfig(panelChartCounts, panelTotal, context, chartKey, selectedProjectName)); // Relies on global selectedProjectName
|
||||
} else {
|
||||
console.error(`Canvas element with ID ${canvasId} not found after creation.`);
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// No panel data, ensure placeholder is shown
|
||||
if (!panelsContainer.querySelector('p')) {
|
||||
panelsContainer.innerHTML = '<p class="text-center fst-italic">No panel data available yet.</p>';
|
||||
}
|
||||
}
|
||||
|
||||
// Remove charts and elements for panels that no longer exist
|
||||
existingInstanceNames.forEach(panelName => {
|
||||
if (!incomingPanelNames.has(panelName)) {
|
||||
console.log(`Removing ${context} panel elements and chart for: ${panelName}`);
|
||||
if (chartInstances[panelName]) {
|
||||
chartInstances[panelName].destroy();
|
||||
delete chartInstances[panelName];
|
||||
}
|
||||
const chartElement = document.getElementById(`chart-container-${context}-${panelName}`);
|
||||
if (chartElement) {
|
||||
chartElement.remove();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Destroys all tracked chart instances.
|
||||
*/
|
||||
function chartManagerDestroyAll() {
|
||||
console.log("[ChartManager] Destroying all chart instances.");
|
||||
Object.values(chartInstancesScada).forEach(chart => chart?.destroy());
|
||||
chartInstancesScada = {};
|
||||
|
||||
Object.values(chartInstancesDrawing).forEach(chart => chart?.destroy());
|
||||
chartInstancesDrawing = {};
|
||||
}
|
||||
|
||||
// --- Export (if using modules in the future) ---
|
||||
// export { updateOverallChart, updatePanelCharts, chartManagerDestroyAll };
|
||||
425
static/js/events.js
Normal file
425
static/js/events.js
Normal file
@ -0,0 +1,425 @@
|
||||
// --- Event Listener Setup and Handlers ---
|
||||
|
||||
// Note: Relies on MANY globally accessible functions and variables:
|
||||
// - State: setSelectedProject, selectedProject, selectedProjectName, currentProjectData
|
||||
// - State helpers: isProcessing
|
||||
// - UI: uiUpdateStatusBar, uiShowProcessingState, uiClearProcessingState, uiClearProjectDisplay,
|
||||
// uiUpdateProjectNameDisplay, uiShowSection, uiShowStatusMessage (via specific wrappers like uiShowUploadStatus),
|
||||
// uiClearManageFilesStatusMessages
|
||||
// - API: apiAddProject, apiUploadPdfs, apiTriggerAnalysis, apiDeletePdf, apiDeleteProject, apiUploadManifest
|
||||
// - Charting: chartManagerDestroyAll
|
||||
// - Modals: modalManagerHide, modalManagerUpdateManageFilesTitle
|
||||
// - Other Core Logic: handleLoadAndDisplayPdfs, updateUIScadaCore, updateUIDrawingCore, updateUIConflictsCore
|
||||
|
||||
// --- Core Handler Functions ---
|
||||
|
||||
/**
|
||||
* Handles the change event for the project selector dropdown.
|
||||
* Updates the global state and triggers a full UI refresh for the selected project.
|
||||
*/
|
||||
function handleProjectChange() {
|
||||
// selectedProjectName should have been updated by the calling event listener
|
||||
console.log(`[Events] Project selection changed to: ${selectedProjectName}`);
|
||||
|
||||
chartManagerDestroyAll(); // Clear charts immediately
|
||||
|
||||
const projectData = currentProjectData[selectedProjectName]; // Access global state
|
||||
if (projectData) {
|
||||
console.log(`[Events] Data found for ${selectedProjectName}. Status: ${projectData.status}`);
|
||||
uiUpdateStatusBar(selectedProjectName, projectData.status, projectData.last_commit);
|
||||
|
||||
if (isProcessing(projectData.status)) {
|
||||
console.log(`[Events] Project processing. Showing loading state.`);
|
||||
uiShowProcessingState(projectData.status);
|
||||
} else {
|
||||
console.log(`[Events] Triggering redraw for newly selected project: ${selectedProjectName}`);
|
||||
uiClearProcessingState(); // Clear any potential global loaders
|
||||
// Draw immediately instead of using setTimeout
|
||||
const latestData = currentProjectData[selectedProjectName];
|
||||
if (latestData && !isProcessing(latestData.status)) {
|
||||
updateUIScadaCore(latestData);
|
||||
updateUIDrawingCore(latestData);
|
||||
updateUIConflictsCore(latestData);
|
||||
} else {
|
||||
// If status is *still* processing (e.g., changed between checks), show loading
|
||||
console.warn("[Events:ProjectChange] State indicates processing on immediate draw attempt.");
|
||||
uiShowProcessingState(latestData?.status || "Processing...");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (selectedProjectName) {
|
||||
console.log(`[Events] No data found yet for selected project: ${selectedProjectName}. Showing loading.`);
|
||||
uiUpdateStatusBar(selectedProjectName, 'Loading data...', 'N/A');
|
||||
uiShowProcessingState('Loading data...');
|
||||
} else {
|
||||
console.log(`[Events] No project selected.`);
|
||||
uiUpdateStatusBar('...', 'No project selected', 'N/A');
|
||||
uiUpdateProjectNameDisplay('No Projects');
|
||||
uiClearProjectDisplay();
|
||||
}
|
||||
}
|
||||
// Manage Files button state is handled by the selector's listener directly
|
||||
}
|
||||
|
||||
// --- Add Project Form Handler ---
|
||||
|
||||
async function handleAddProjectSubmit(event) {
|
||||
event.preventDefault();
|
||||
const form = event.target;
|
||||
const statusDiv = document.getElementById('addProjectStatus');
|
||||
const submitButton = form.querySelector('button[type="submit"]');
|
||||
const modalElement = form.closest('.modal');
|
||||
|
||||
// UI update: Show submitting status
|
||||
statusDiv.style.display = 'none'; // Use direct style manipulation or a UI function
|
||||
statusDiv.textContent = '';
|
||||
statusDiv.className = 'mt-3 alert alert-info';
|
||||
statusDiv.textContent = 'Submitting project...';
|
||||
statusDiv.style.display = 'block';
|
||||
submitButton.disabled = true;
|
||||
|
||||
// Validation
|
||||
const projectNameInput = document.getElementById('projectName');
|
||||
const projectName = projectNameInput.value.trim();
|
||||
const manifestFile = document.getElementById('manifestFile').files[0];
|
||||
const pdfFiles = document.getElementById('pdfFiles').files;
|
||||
let validationError = null;
|
||||
if (!/^[a-zA-Z0-9_-]+$/.test(projectName)) validationError = 'Invalid Project Name. Use only letters, numbers, underscores, or hyphens.';
|
||||
else if (!manifestFile) validationError = 'Manifest CSV file is required.';
|
||||
else if (pdfFiles.length === 0) validationError = 'At least one Drawing PDF file is required.';
|
||||
|
||||
if (validationError) {
|
||||
statusDiv.className = 'mt-3 alert alert-danger';
|
||||
statusDiv.textContent = validationError;
|
||||
submitButton.disabled = false;
|
||||
return;
|
||||
}
|
||||
|
||||
// Call API
|
||||
try {
|
||||
const formData = new FormData(form);
|
||||
const result = await apiAddProject(formData); // Use API module
|
||||
statusDiv.className = 'mt-3 alert alert-success';
|
||||
statusDiv.textContent = result.message || 'Project added successfully.';
|
||||
form.reset();
|
||||
modalManagerHide(modalElement); // Use Modal module
|
||||
setTimeout(() => { submitButton.disabled = false; }, 500);
|
||||
} catch (error) {
|
||||
statusDiv.className = 'mt-3 alert alert-danger';
|
||||
statusDiv.textContent = `Error: ${error.message || 'Could not add project.'}`;
|
||||
submitButton.disabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// --- Manage Files Modal Action Handlers ---
|
||||
|
||||
async function handlePdfDeleteAction(projectName, filename) {
|
||||
if (!confirm(`Are you sure you want to delete the file: ${filename}? This cannot be undone.`)) {
|
||||
return;
|
||||
}
|
||||
console.log(`[Events] Requesting deletion of ${filename} from project ${projectName}`);
|
||||
uiClearManageFilesStatusMessages();
|
||||
uiShowManageFilesStatus(`Deleting ${filename}...`, 'info');
|
||||
|
||||
try {
|
||||
const data = await apiDeletePdf(projectName, filename); // Use API module
|
||||
uiShowManageFilesStatus(data.message || `Successfully deleted ${filename}.`, 'success');
|
||||
await handleLoadAndDisplayPdfs(projectName); // Refresh list (function in script.js)
|
||||
uiShowAnalysisTriggerStatus('File deleted. Trigger analysis to update progress.', 'info');
|
||||
} catch (error) {
|
||||
console.error('[Events] Error deleting PDF:', error);
|
||||
uiShowManageFilesStatus(`Error deleting file: ${error.message}`, 'danger');
|
||||
}
|
||||
}
|
||||
|
||||
async function handlePdfUploadAction(form) {
|
||||
// selectedProject accessed globally
|
||||
if (!selectedProject) return;
|
||||
|
||||
const formData = new FormData(form);
|
||||
const fileInput = document.getElementById('newPdfFiles');
|
||||
|
||||
if (!fileInput || !fileInput.files || fileInput.files.length === 0) {
|
||||
uiShowUploadStatus('Please select at least one PDF file to upload.', 'warning');
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(`[Events] Uploading ${fileInput.files.length} file(s) to project ${selectedProject}`);
|
||||
uiClearManageFilesStatusMessages();
|
||||
uiShowUploadStatus('Uploading files...', 'info', false);
|
||||
|
||||
try {
|
||||
const data = await apiUploadPdfs(selectedProject, formData); // Use API module
|
||||
uiShowUploadStatus(data.message || `Successfully uploaded files.`, 'success');
|
||||
form.reset();
|
||||
await handleLoadAndDisplayPdfs(selectedProject); // Refresh list (function in script.js)
|
||||
uiShowAnalysisTriggerStatus('Files uploaded. Trigger analysis to update progress.', 'info');
|
||||
} catch (error) {
|
||||
console.error('[Events] Error uploading PDFs:', error);
|
||||
uiShowUploadStatus(`Upload failed: ${error.message}`, 'danger');
|
||||
}
|
||||
// Can't easily clear the 'uploading' message here if error occurs before final state
|
||||
// Consider removing the direct DOM check from the original function
|
||||
}
|
||||
|
||||
async function handleTriggerAnalysisAction() {
|
||||
// selectedProject accessed globally
|
||||
if (!selectedProject) return;
|
||||
console.log(`[Events] Requesting manual analysis trigger for project ${selectedProject}`);
|
||||
uiClearManageFilesStatusMessages();
|
||||
// --- Set global flag to true ---
|
||||
isAnalysisGloballyActive = true;
|
||||
console.log(`[State] isAnalysisGloballyActive set to: ${isAnalysisGloballyActive}`);
|
||||
// Show status in modal immediately
|
||||
uiShowAnalysisTriggerStatus('Triggering analysis...', 'info', false);
|
||||
|
||||
// Also update main UI immediately to show processing state
|
||||
const statusMsg = "Analysis triggered...";
|
||||
const currentCommit = currentProjectData[selectedProject]?.last_commit || 'N/A'; // Get current commit if available
|
||||
uiUpdateStatusBar(selectedProject, statusMsg, currentCommit);
|
||||
uiShowProcessingState(statusMsg);
|
||||
|
||||
try {
|
||||
const data = await apiTriggerAnalysis(selectedProject); // Use API module
|
||||
// Update modal status on success, main UI is already showing processing
|
||||
uiShowAnalysisTriggerStatus(data.message || 'Analysis triggered successfully. Monitor status bar for updates.', 'success', false);
|
||||
} catch (error) {
|
||||
console.error('[Events] Error triggering analysis:', error);
|
||||
uiShowAnalysisTriggerStatus(`Error: ${error.message}`, 'danger');
|
||||
// If trigger fails, reset global flag and clear processing state? Maybe.
|
||||
isAnalysisGloballyActive = false; // Reset flag on error
|
||||
uiClearProcessingState();
|
||||
// Restore status bar to previous state? Or show error?
|
||||
uiUpdateStatusBar(selectedProject, `Error triggering: ${error.message}`, currentCommit);
|
||||
}
|
||||
}
|
||||
|
||||
async function handleDeleteProjectAction() {
|
||||
// selectedProject accessed globally
|
||||
if (!selectedProject) {
|
||||
uiShowDeleteProjectStatus('No project selected to delete.', 'warning');
|
||||
return;
|
||||
}
|
||||
|
||||
const confirmation = prompt(
|
||||
`This action is IRREVERSIBLE and will permanently delete the project '${selectedProject}' and all its data (manifest, PDFs, text files, cloned repository) from the server.\n\nType the project name '${selectedProject}' below to confirm deletion:`
|
||||
);
|
||||
|
||||
if (confirmation !== selectedProject) {
|
||||
uiShowDeleteProjectStatus('Project deletion cancelled or confirmation mismatch.', 'info');
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(`[Events] Requesting deletion of project ${selectedProject}`);
|
||||
uiClearManageFilesStatusMessages();
|
||||
uiShowDeleteProjectStatus(`Deleting project '${selectedProject}'...`, 'info', false);
|
||||
const deleteBtn = document.getElementById('deleteProjectBtn'); // Direct access ok for disabling?
|
||||
if (deleteBtn) deleteBtn.disabled = true;
|
||||
|
||||
try {
|
||||
const data = await apiDeleteProject(selectedProject); // Use API module
|
||||
uiShowDeleteProjectStatus(`Project '${selectedProject}' deleted successfully.`, 'success', false);
|
||||
|
||||
// Remove setTimeout for immediate UI update
|
||||
// setTimeout(() => {
|
||||
const manageModalElem = document.getElementById('manageFilesModal');
|
||||
modalManagerHide(manageModalElem); // Use Modal module
|
||||
|
||||
// Update project selector UI
|
||||
const selector = document.getElementById('projectSelector');
|
||||
let newSelectedIndex = -1;
|
||||
for (let i = 0; i < selector.options.length; i++) {
|
||||
if (selector.options[i].value === selectedProject) {
|
||||
newSelectedIndex = (i > 0) ? i - 1 : 0;
|
||||
selector.remove(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Update state and trigger UI refresh
|
||||
if (selector.options.length > 0) {
|
||||
selector.selectedIndex = newSelectedIndex >= 0 ? newSelectedIndex : 0;
|
||||
setSelectedProject(selector.value);
|
||||
handleProjectChange(); // Trigger full refresh
|
||||
} else {
|
||||
selector.innerHTML = '<option value="" disabled selected>No projects found</option>';
|
||||
setSelectedProject(null);
|
||||
uiUpdateProjectNameDisplay('No Projects');
|
||||
uiUpdateStatusBar('...', 'No projects available', 'N/A');
|
||||
uiClearProjectDisplay();
|
||||
const manageFilesBtn = document.getElementById('manageFilesBtn');
|
||||
if(manageFilesBtn) manageFilesBtn.disabled = true;
|
||||
}
|
||||
if (deleteBtn) deleteBtn.disabled = false; // Re-enable after operation
|
||||
|
||||
// }, 1500);
|
||||
|
||||
} catch (error) {
|
||||
console.error('[Events] Error deleting project:', error);
|
||||
uiShowDeleteProjectStatus(`Error: ${error.message}`, 'danger', false);
|
||||
if (deleteBtn) deleteBtn.disabled = false; // Re-enable on error
|
||||
}
|
||||
}
|
||||
|
||||
async function handleManifestUploadAction(form) {
|
||||
// selectedProject accessed globally
|
||||
if (!selectedProject) return;
|
||||
|
||||
const formData = new FormData(form);
|
||||
const fileInput = document.getElementById('newManifestFile');
|
||||
|
||||
// Validation
|
||||
if (!fileInput || !fileInput.files || fileInput.files.length === 0) {
|
||||
uiShowUploadManifestStatus('Please select a manifest CSV file to upload.', 'warning');
|
||||
return;
|
||||
}
|
||||
const manifestFile = fileInput.files[0];
|
||||
if (!manifestFile.name.toLowerCase().endsWith('.csv')) {
|
||||
uiShowUploadManifestStatus('Invalid file type. Please select a .csv file.', 'warning');
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(`[Events] Uploading new manifest for project ${selectedProject}`);
|
||||
uiClearManageFilesStatusMessages();
|
||||
uiShowUploadManifestStatus('Uploading manifest...', 'info', false);
|
||||
|
||||
try {
|
||||
const data = await apiUploadManifest(selectedProject, formData); // Use API module
|
||||
uiShowUploadManifestStatus(data.message || 'Manifest updated successfully.', 'success');
|
||||
form.reset();
|
||||
uiShowAnalysisTriggerStatus('Manifest updated. Trigger analysis to see changes.', 'info');
|
||||
} catch (error) {
|
||||
console.error('[Events] Error uploading manifest:', error);
|
||||
uiShowUploadManifestStatus(`Upload failed: ${error.message}`, 'danger');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// --- Initialization Function ---
|
||||
|
||||
/**
|
||||
* Initializes the application state and attaches all necessary event listeners.
|
||||
*/
|
||||
function initializeEventListeners() {
|
||||
console.log("[Events] Initializing event listeners and initial UI state...");
|
||||
|
||||
// --- Get DOM element references ---
|
||||
const projectSelector = document.getElementById('projectSelector');
|
||||
const manageFilesBtn = document.getElementById('manageFilesBtn');
|
||||
const addProjectForm = document.getElementById('addProjectForm');
|
||||
const manageFilesModalElement = document.getElementById('manageFilesModal');
|
||||
const uploadPdfsForm = document.getElementById('uploadPdfsForm');
|
||||
const triggerAnalysisBtn = document.getElementById('triggerAnalysisBtn');
|
||||
const deleteProjectBtn = document.getElementById('deleteProjectBtn');
|
||||
const uploadManifestForm = document.getElementById('uploadManifestForm');
|
||||
const existingPdfListDiv = document.getElementById('existingPdfList');
|
||||
|
||||
// --- Setup Initial State & UI ---
|
||||
// initialServerData is expected to be globally available from the HTML template
|
||||
initialStatuses = initialServerData.status || {}; // Store initial statuses globally
|
||||
|
||||
if (projectSelector && projectSelector.options.length > 0 && projectSelector.value) {
|
||||
setSelectedProject(projectSelector.value);
|
||||
console.log("[Events] Initial project selected:", selectedProject);
|
||||
if (manageFilesBtn) manageFilesBtn.disabled = !selectedProject;
|
||||
// Set initial status bar text using potentially embedded initial status
|
||||
const initialStatus = initialStatuses[selectedProject] || 'Initializing...';
|
||||
uiUpdateStatusBar(selectedProject, initialStatus, 'N/A');
|
||||
// Perform initial UI setup (will show loading if status is processing)
|
||||
handleProjectChange();
|
||||
} else {
|
||||
console.log("[Events] No projects found initially or selector empty.");
|
||||
setSelectedProject(null);
|
||||
if (manageFilesBtn) manageFilesBtn.disabled = true;
|
||||
uiUpdateProjectNameDisplay('No Projects');
|
||||
uiUpdateStatusBar('...', 'No projects discovered.', 'N/A');
|
||||
uiClearProjectDisplay();
|
||||
}
|
||||
|
||||
// Show initial section (SCADA by default) after potentially setting initial state
|
||||
uiShowSection('scada');
|
||||
|
||||
// --- Attach Event Listeners ---
|
||||
|
||||
// Project Selector
|
||||
if (projectSelector) {
|
||||
projectSelector.addEventListener('change', (event) => {
|
||||
setSelectedProject(event.target.value);
|
||||
handleProjectChange(); // Trigger full update
|
||||
if (manageFilesBtn) manageFilesBtn.disabled = !selectedProject;
|
||||
});
|
||||
}
|
||||
|
||||
// Navigation Tabs
|
||||
document.querySelectorAll('.nav-link[data-view]').forEach(link => {
|
||||
link.addEventListener('click', (event) => {
|
||||
event.preventDefault();
|
||||
const targetSection = link.getAttribute('data-view');
|
||||
uiShowSection(targetSection);
|
||||
});
|
||||
});
|
||||
|
||||
// Add Project Form
|
||||
if (addProjectForm) {
|
||||
addProjectForm.addEventListener('submit', handleAddProjectSubmit);
|
||||
}
|
||||
|
||||
// Manage Files Modal: Show
|
||||
if (manageFilesModalElement && manageFilesBtn) {
|
||||
manageFilesModalElement.addEventListener('show.bs.modal', async () => {
|
||||
// selectedProject accessed globally
|
||||
if (!selectedProject) return;
|
||||
modalManagerUpdateManageFilesTitle(selectedProject);
|
||||
uiClearManageFilesStatusMessages();
|
||||
await handleLoadAndDisplayPdfs(selectedProject); // Calls function in script.js
|
||||
});
|
||||
}
|
||||
|
||||
// Manage Files Modal: PDF Upload Form
|
||||
if (uploadPdfsForm) {
|
||||
uploadPdfsForm.addEventListener('submit', (event) => {
|
||||
event.preventDefault();
|
||||
handlePdfUploadAction(event.target);
|
||||
});
|
||||
}
|
||||
|
||||
// Manage Files Modal: Trigger Analysis Button
|
||||
if (triggerAnalysisBtn) {
|
||||
triggerAnalysisBtn.addEventListener('click', handleTriggerAnalysisAction);
|
||||
}
|
||||
|
||||
// Manage Files Modal: Delete PDF Button (Event Delegation)
|
||||
if (existingPdfListDiv) {
|
||||
existingPdfListDiv.addEventListener('click', (event) => {
|
||||
if (event.target.classList.contains('pdf-delete-btn')) {
|
||||
const button = event.target;
|
||||
const filename = button.dataset.filename;
|
||||
const projectName = button.dataset.project;
|
||||
if (filename && projectName) {
|
||||
handlePdfDeleteAction(projectName, filename);
|
||||
} else {
|
||||
console.error("[Events] Missing filename or project name on delete button.", button);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Manage Files Modal: Delete Project Button
|
||||
if (deleteProjectBtn) {
|
||||
deleteProjectBtn.addEventListener('click', handleDeleteProjectAction);
|
||||
}
|
||||
|
||||
// Manage Files Modal: Manifest Upload Form
|
||||
if (uploadManifestForm) {
|
||||
uploadManifestForm.addEventListener('submit', (event) => {
|
||||
event.preventDefault();
|
||||
handleManifestUploadAction(event.target);
|
||||
});
|
||||
}
|
||||
|
||||
console.log("[Events] Event listeners attached.");
|
||||
}
|
||||
|
||||
// --- Export (if using modules) ---
|
||||
// export { initializeEventListeners };
|
||||
187
static/js/modalManager.js
Normal file
187
static/js/modalManager.js
Normal file
@ -0,0 +1,187 @@
|
||||
// --- Modal Management ---
|
||||
|
||||
// Store modal instances internally
|
||||
let detailsModalInstance = null;
|
||||
let addProjectModalInstance = null;
|
||||
let manageFilesModalInstance = null;
|
||||
|
||||
// Function to initialize Bootstrap modal instances
|
||||
// Call this once when the DOM is ready
|
||||
function initializeModals() {
|
||||
const detailsModalElement = document.getElementById('detailsModal');
|
||||
if (detailsModalElement) {
|
||||
detailsModalInstance = new bootstrap.Modal(detailsModalElement);
|
||||
}
|
||||
const addProjectModalElement = document.getElementById('addProjectModal');
|
||||
if (addProjectModalElement) {
|
||||
addProjectModalInstance = new bootstrap.Modal(addProjectModalElement);
|
||||
}
|
||||
const manageFilesModalElement = document.getElementById('manageFilesModal');
|
||||
if (manageFilesModalElement) {
|
||||
manageFilesModalInstance = new bootstrap.Modal(manageFilesModalElement);
|
||||
}
|
||||
console.log("[ModalManager] Modals initialized.");
|
||||
}
|
||||
|
||||
/**
|
||||
* Hides a given Bootstrap modal element.
|
||||
* @param {HTMLElement} modalElement - The DOM element of the modal to hide.
|
||||
*/
|
||||
function modalManagerHide(modalElement) {
|
||||
if (!modalElement) return;
|
||||
const instance = bootstrap.Modal.getInstance(modalElement);
|
||||
if (instance) {
|
||||
instance.hide();
|
||||
} else {
|
||||
console.warn("Modal instance not found for element:", modalElement);
|
||||
}
|
||||
}
|
||||
|
||||
// --- Details Modal ---
|
||||
|
||||
/**
|
||||
* Shows the details modal, populating it with data based on chart click context.
|
||||
* Relies on global state: currentProjectData, scadaListKeysMap, drawingListKeysMap.
|
||||
* @param {string} projectName - The name of the selected project.
|
||||
* @param {string} identifier - '__overall__' or the panel name.
|
||||
* @param {string} categoryType - 'found' or 'notFound'.
|
||||
* @param {string} context - 'scada' or 'drawing'.
|
||||
*/
|
||||
function modalManagerShowDetails(projectName, identifier, categoryType, context) {
|
||||
console.log(`[ModalManager] Showing details for: ${projectName} - ${identifier} (${context} / ${categoryType})`);
|
||||
if (!detailsModalInstance) {
|
||||
console.error("[ModalManager] Details modal instance not initialized.");
|
||||
alert("Error: Details modal is not available.");
|
||||
return;
|
||||
}
|
||||
|
||||
let sourceData = null;
|
||||
let panelNameDisplay = "";
|
||||
const listKeysMap = context === 'scada' ? scadaListKeysMap : drawingListKeysMap; // Uses global state
|
||||
const listTypeLabel = categoryType === 'found'
|
||||
? (context === 'scada' ? 'Found in SCADA' : 'Found in Drawing')
|
||||
: (context === 'scada' ? 'Not Found in SCADA' : 'Not Found in Drawing');
|
||||
|
||||
// Get the specific project's progress data - uses global state
|
||||
const projectProgress = (currentProjectData[projectName] && currentProjectData[projectName].progress) ? currentProjectData[projectName].progress : {};
|
||||
|
||||
if (identifier === '__overall__') {
|
||||
sourceData = projectProgress.overall || null;
|
||||
panelNameDisplay = `Overall (${projectName})`;
|
||||
} else {
|
||||
sourceData = (projectProgress.panels) ? projectProgress.panels[identifier] : null;
|
||||
panelNameDisplay = `${identifier} (${projectName})`;
|
||||
}
|
||||
|
||||
if (!sourceData) {
|
||||
console.error(`[ModalManager] Could not find source data for modal. Project: ${projectName}, Identifier: ${identifier}, Context: ${context}`);
|
||||
alert("Error: Could not load details data.");
|
||||
return;
|
||||
}
|
||||
|
||||
const backendListKeys = listKeysMap[categoryType];
|
||||
if (!backendListKeys) {
|
||||
console.error(`[ModalManager] Invalid categoryType: ${categoryType}`);
|
||||
alert("Error: Invalid data category.");
|
||||
return;
|
||||
}
|
||||
|
||||
let combinedDataList = [];
|
||||
backendListKeys.forEach(key => {
|
||||
if (sourceData[key]) {
|
||||
combinedDataList = combinedDataList.concat(sourceData[key]);
|
||||
}
|
||||
});
|
||||
|
||||
// Get modal elements
|
||||
const modalElement = document.getElementById('detailsModal');
|
||||
const modalTitleElement = modalElement?.querySelector('.modal-title'); // Use more specific ID if available
|
||||
const modalTableBody = modalElement?.querySelector('.modal-body tbody');
|
||||
|
||||
if (!modalTitleElement || !modalTableBody) {
|
||||
console.error("[ModalManager] Details modal title or table body element not found.");
|
||||
alert("Error: Could not display details.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (combinedDataList.length === 0) {
|
||||
// Optionally show a message in the modal instead of alert
|
||||
console.log(`[ModalManager] No items found for ${panelNameDisplay} - ${listTypeLabel}.`);
|
||||
alert(`No items found for ${panelNameDisplay} - ${listTypeLabel}.`);
|
||||
return; // Don't show empty modal
|
||||
}
|
||||
|
||||
modalTitleElement.innerHTML = `${listTypeLabel} Items for ${panelNameDisplay} <span class="badge bg-secondary ms-2">${combinedDataList.length}</span>`;
|
||||
modalTableBody.innerHTML = ''; // Clear previous content
|
||||
|
||||
combinedDataList.sort((a, b) => a.alias.localeCompare(b.alias)).forEach(item => {
|
||||
const row = document.createElement('tr');
|
||||
row.insertCell().textContent = item.alias;
|
||||
row.insertCell().textContent = item.control_panel;
|
||||
const scadaCell = row.insertCell(); scadaCell.innerHTML = item.found_scada ? '<span class="status-yes">Yes</span>' : '<span class="status-no">No</span>';
|
||||
const drawingCell = row.insertCell(); drawingCell.innerHTML = item.found_drawing ? '<span class="status-yes">Yes</span>' : '<span class="status-no">No</span>';
|
||||
row.insertCell().textContent = item.equipment_type || 'N/A';
|
||||
row.insertCell().textContent = item.conveyor_type || 'N/A';
|
||||
if (item.found_scada && !item.found_drawing) { row.classList.add('table-warning'); }
|
||||
modalTableBody.appendChild(row);
|
||||
});
|
||||
|
||||
detailsModalInstance.show();
|
||||
}
|
||||
|
||||
// --- Manage Files Modal ---
|
||||
|
||||
/**
|
||||
* Populates the PDF list within the Manage Files modal.
|
||||
* @param {HTMLElement} pdfListDiv - The container element for the list.
|
||||
* @param {string} projectName - The name of the current project.
|
||||
* @param {Array<string>} pdfFiles - An array of PDF filenames.
|
||||
*/
|
||||
function modalManagerPopulatePdfList(pdfListDiv, projectName, pdfFiles) {
|
||||
pdfListDiv.innerHTML = ''; // Clear loading/previous state
|
||||
|
||||
if (pdfFiles && pdfFiles.length > 0) {
|
||||
pdfFiles.forEach(filename => {
|
||||
const listItem = document.createElement('div');
|
||||
listItem.className = 'list-group-item d-flex justify-content-between align-items-center';
|
||||
|
||||
const nameSpan = document.createElement('span');
|
||||
nameSpan.textContent = filename;
|
||||
nameSpan.title = filename; // Show full name on hover
|
||||
nameSpan.style.overflow = 'hidden';
|
||||
nameSpan.style.textOverflow = 'ellipsis';
|
||||
nameSpan.style.whiteSpace = 'nowrap';
|
||||
nameSpan.style.marginRight = '10px';
|
||||
|
||||
const deleteButton = document.createElement('button');
|
||||
deleteButton.className = 'btn btn-danger btn-sm flex-shrink-0 pdf-delete-btn'; // Add class for event delegation
|
||||
deleteButton.textContent = 'Delete';
|
||||
deleteButton.title = `Delete ${filename}`;
|
||||
deleteButton.dataset.filename = filename; // Store filename in data attribute
|
||||
deleteButton.dataset.project = projectName; // Store projectname in data attribute
|
||||
// Remove inline onclick, use event delegation in events.js
|
||||
// deleteButton.onclick = () => handleDeletePdfClick(projectName, filename);
|
||||
|
||||
listItem.appendChild(nameSpan);
|
||||
listItem.appendChild(deleteButton);
|
||||
pdfListDiv.appendChild(listItem);
|
||||
});
|
||||
} else {
|
||||
pdfListDiv.innerHTML = '<div class="list-group-item text-muted">No PDF files found for this project.</div>';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the title of the Manage Files modal.
|
||||
* @param {string} projectName - The name of the selected project.
|
||||
*/
|
||||
function modalManagerUpdateManageFilesTitle(projectName) {
|
||||
const manageFilesModalElement = document.getElementById('manageFilesModal');
|
||||
if (!manageFilesModalElement) return;
|
||||
manageFilesModalElement.querySelectorAll('.project-name-display').forEach(span => {
|
||||
span.textContent = projectName || '...'; // Handle null/empty projectName
|
||||
});
|
||||
}
|
||||
|
||||
// --- Export (if using modules in the future) ---
|
||||
// export { initializeModals, modalManagerShowDetails, modalManagerPopulatePdfList, modalManagerUpdateManageFilesTitle, modalManagerHide };
|
||||
1577
static/js/script.js
1577
static/js/script.js
File diff suppressed because it is too large
Load Diff
166
static/js/sse.js
Normal file
166
static/js/sse.js
Normal file
@ -0,0 +1,166 @@
|
||||
// --- Server-Sent Events (SSE) Management ---
|
||||
|
||||
// Note: Relies on several functions and variables being globally accessible:
|
||||
// - Global state: currentProjectData, selectedProjectName, eventSource
|
||||
// - State helpers: isProcessing, setSelectedProject
|
||||
// - UI functions: uiUpdateStatusBar, uiShowProcessingState, uiClearProcessingState, uiUpdateProjectSelector, uiClearProjectDisplay
|
||||
// - Core update functions: handleProjectChange, updateUIScadaCore, updateUIDrawingCore, updateUIConflictsCore
|
||||
// - Utility: debounce
|
||||
|
||||
/**
|
||||
* Processes the full data update received from the SSE stream.
|
||||
* Updates the internal state and triggers UI updates based on the data.
|
||||
* @param {object} fullData - The complete data object from the server.
|
||||
*/
|
||||
function sseProcessUpdate(fullData) {
|
||||
console.log("[SSE] Received Full Data:", fullData);
|
||||
|
||||
// Store the latest full data globally
|
||||
currentProjectData = {}; // Reset first
|
||||
const incomingProjects = fullData.projects || [];
|
||||
incomingProjects.forEach(projName => {
|
||||
currentProjectData[projName] = {
|
||||
status: fullData.status ? fullData.status[projName] : 'Unknown',
|
||||
last_commit: fullData.last_commit ? fullData.last_commit[projName] : 'N/A',
|
||||
// Ensure progress exists and has expected structure
|
||||
progress: (fullData.progress && fullData.progress[projName])
|
||||
? fullData.progress[projName]
|
||||
: { overall: {}, panels: {} }
|
||||
};
|
||||
});
|
||||
|
||||
// --- Update Project Selector Dropdown ---
|
||||
const selectionChanged = uiUpdateProjectSelector(incomingProjects);
|
||||
if (selectionChanged) {
|
||||
// If the selection was forced (e.g., previous deleted, list empty)
|
||||
// handleProjectChange will update the UI for the new/empty selection
|
||||
console.log("[SSE] Project selection changed by dropdown update. Calling handleProjectChange.");
|
||||
handleProjectChange(); // Needs global access
|
||||
return; // Stop further processing here
|
||||
}
|
||||
|
||||
// --- Process data for the currently selected project ---
|
||||
const currentSelection = document.getElementById('projectSelector')?.value; // Check selector exists
|
||||
// Update global state if needed (should normally match after selector update)
|
||||
if (selectedProjectName !== currentSelection) {
|
||||
setSelectedProject(currentSelection); // Needs global access
|
||||
}
|
||||
|
||||
if (!selectedProjectName || !currentProjectData[selectedProjectName]) {
|
||||
console.log("[SSE] No project selected or no data available for selected project.");
|
||||
// Update UI to reflect lack of selection/data
|
||||
const projectSelector = document.getElementById('projectSelector');
|
||||
if (projectSelector && projectSelector.options.length > 0 && projectSelector.value) {
|
||||
uiUpdateStatusBar(selectedProjectName, 'Waiting for data...', 'N/A');
|
||||
uiShowProcessingState('Waiting for data...');
|
||||
} else {
|
||||
uiUpdateStatusBar('...', 'No projects available', 'N/A');
|
||||
uiClearProjectDisplay();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
const projectData = currentProjectData[selectedProjectName];
|
||||
|
||||
// Update status bar immediately
|
||||
uiUpdateStatusBar(selectedProjectName, projectData.status, projectData.last_commit);
|
||||
|
||||
// Update main UI based on processing state
|
||||
if (isProcessing(projectData.status)) { // Needs global access
|
||||
console.log(`[SSE] Project ${selectedProjectName} is processing.`);
|
||||
// If *any* project is processing, the global flag should remain true
|
||||
// (or be set to true if it wasn't already)
|
||||
isAnalysisGloballyActive = true;
|
||||
console.log(`[State] isAnalysisGloballyActive set/kept true due to processing status: "${projectData.status}"`);
|
||||
uiShowProcessingState(projectData.status);
|
||||
} else {
|
||||
console.log(`[SSE] Project ${selectedProjectName} is ready/error.`);
|
||||
// --- Update Global Flag: Check if ANY project is still processing ---
|
||||
let anyProjectStillProcessing = false;
|
||||
const projectNames = Object.keys(currentProjectData);
|
||||
for (const projName of projectNames) {
|
||||
if (currentProjectData[projName] && isProcessing(currentProjectData[projName].status)) {
|
||||
anyProjectStillProcessing = true;
|
||||
console.log(`[State] Project ${projName} is still processing. Keeping isAnalysisGloballyActive true.`);
|
||||
break; // Found one, no need to check others
|
||||
}
|
||||
}
|
||||
if (!anyProjectStillProcessing) {
|
||||
isAnalysisGloballyActive = false;
|
||||
console.log("[State] No projects are processing. isAnalysisGloballyActive set to false.");
|
||||
}
|
||||
// --- End Global Flag Update ---
|
||||
|
||||
uiClearProcessingState();
|
||||
// Call core redraws immediately
|
||||
const latestData = currentProjectData[selectedProjectName]; // Get current data
|
||||
if(latestData && !isProcessing(latestData.status)) { // Double-check status
|
||||
console.log("[SSE] Triggering immediate redraw after non-processing update.");
|
||||
updateUIScadaCore(latestData); // Needs global access
|
||||
updateUIDrawingCore(latestData); // Needs global access
|
||||
updateUIConflictsCore(latestData); // Needs global access
|
||||
} else {
|
||||
// If state somehow changed *back* to processing (unlikely here, but safe check)
|
||||
console.warn("[SSE] State seems to indicate processing immediately after non-processing update.");
|
||||
uiShowProcessingState(latestData?.status || "Processing...");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Create a debounced version of the process update function
|
||||
const debouncedProcessUpdate = debounce(sseProcessUpdate, 250);
|
||||
|
||||
/**
|
||||
* Initializes the Server-Sent Events connection and sets up message handlers.
|
||||
*/
|
||||
function sseInitialize() {
|
||||
console.log("[SSE] Initializing connection...");
|
||||
// Use global eventSource variable from state.js
|
||||
if (eventSource) {
|
||||
console.log("[SSE] Closing existing connection.");
|
||||
eventSource.close();
|
||||
}
|
||||
|
||||
try {
|
||||
eventSource = new EventSource("/stream");
|
||||
|
||||
eventSource.onmessage = function(event) {
|
||||
try {
|
||||
const data = JSON.parse(event.data);
|
||||
// Call the debounced processor
|
||||
debouncedProcessUpdate(data);
|
||||
} catch (error) {
|
||||
console.error("[SSE] Error parsing data:", error, "Data:", event.data);
|
||||
// Update UI to show error
|
||||
uiUpdateStatusBar(selectedProjectName, 'Error processing server update.', 'N/A');
|
||||
}
|
||||
};
|
||||
|
||||
eventSource.onerror = function(err) {
|
||||
console.error("[SSE] Connection error:", err);
|
||||
// Update UI to show error
|
||||
uiUpdateStatusBar(selectedProjectName, 'Connection lost. Retrying...', 'N/A');
|
||||
// Simple retry mechanism: close and re-initialize after a delay
|
||||
if (eventSource) {
|
||||
eventSource.close();
|
||||
eventSource = null; // Nullify to allow re-creation
|
||||
}
|
||||
setTimeout(sseInitialize, 5000); // Attempt to reconnect after 5 seconds
|
||||
};
|
||||
|
||||
eventSource.onopen = function() {
|
||||
console.log("[SSE] Connection opened.");
|
||||
// Optionally update UI to show connected status
|
||||
uiUpdateStatusBar(selectedProjectName, "Connected. Waiting for updates...", currentProjectData[selectedProjectName]?.last_commit);
|
||||
};
|
||||
|
||||
console.log("[SSE] Event handlers set up.");
|
||||
|
||||
} catch (error) {
|
||||
console.error("[SSE] Failed to create EventSource:", error);
|
||||
uiUpdateStatusBar(selectedProjectName, 'Failed to connect to server.', 'N/A');
|
||||
}
|
||||
}
|
||||
|
||||
// --- Export (if using modules) ---
|
||||
// export { sseInitialize };
|
||||
84
static/js/state.js
Normal file
84
static/js/state.js
Normal file
@ -0,0 +1,84 @@
|
||||
// --- Global State Variables ---
|
||||
// MOVED chart instances to chartManager.js
|
||||
// let chartInstancesScada = {}; // Separate instances for SCADA
|
||||
// let chartInstancesDrawing = {}; // Separate instances for Drawing
|
||||
let currentProjectData = {}; // Stores the LATEST full data received from SSE { project: {status, commit, progress}, ... }
|
||||
let selectedProjectName = null; // Track the currently selected project (string)
|
||||
let selectedProject = null; // Duplicate of selectedProjectName? Keep for now, investigate later.
|
||||
// MOVED to modalManager.js
|
||||
// let detailsModalInstance = null; // Bootstrap modal instance for the details popup
|
||||
let currentVisibleSection = 'scada'; // Track visible section: 'scada', 'drawings', 'conflicts'
|
||||
let eventSource = null; // Reference to the SSE EventSource object
|
||||
let initialStatuses = {}; // Initial statuses passed from server (if any)
|
||||
let isAnalysisGloballyActive = false; // NEW: Flag to indicate if *any* background analysis/check might be running
|
||||
|
||||
// Map backend list keys for modal clicks
|
||||
const scadaListKeysMap = {
|
||||
found: ['found_both_list', 'found_scada_only_list'],
|
||||
notFound: ['found_drawing_only_list', 'missing_list']
|
||||
};
|
||||
const drawingListKeysMap = {
|
||||
found: ['found_both_list', 'found_drawing_only_list'],
|
||||
notFound: ['found_scada_only_list', 'missing_list']
|
||||
};
|
||||
|
||||
|
||||
// --- Utility Functions ---
|
||||
|
||||
// Debounce function to limit the rate at which a function can fire.
|
||||
function debounce(func, wait) {
|
||||
let timeout;
|
||||
return function executedFunction(...args) {
|
||||
const later = () => {
|
||||
clearTimeout(timeout);
|
||||
func(...args);
|
||||
};
|
||||
clearTimeout(timeout);
|
||||
timeout = setTimeout(later, wait);
|
||||
};
|
||||
}
|
||||
|
||||
// Checks if the status message indicates ongoing processing
|
||||
function isProcessing(statusMsg) {
|
||||
if (!statusMsg) return false; // Handle undefined/null status
|
||||
const lowerStatus = statusMsg.toLowerCase();
|
||||
|
||||
// --- Keywords that indicate FINAL/NON-PROCESSING states ---
|
||||
// (Return false immediately if any of these are found)
|
||||
if (lowerStatus.includes('analysis complete') ||
|
||||
lowerStatus.includes('no changes') || // Covers "Checked repo... No changes."
|
||||
lowerStatus.includes('error') || // Any error message is a final state
|
||||
lowerStatus.includes('warning') || // Warnings are usually non-processing
|
||||
lowerStatus.includes('n/a') || // Not applicable / initial state before selection
|
||||
lowerStatus.includes('no project') || // No project selected state
|
||||
lowerStatus.includes('updated successfully') || // Manifest/PDF upload success
|
||||
lowerStatus.includes('deleted successfully') // PDF/Project deletion success
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// --- Keywords indicating ACTIVE processing ---
|
||||
// (Return true if any of these are found AFTER checking final states)
|
||||
return lowerStatus.includes('initializ') || // initializing, initial...
|
||||
lowerStatus.includes('cloning') ||
|
||||
lowerStatus.includes('fetching') ||
|
||||
lowerStatus.includes('pulling') ||
|
||||
lowerStatus.includes('checking') || // checking repo, checking scada, checking drawings (but NOT "Checked repo... no changes")
|
||||
lowerStatus.includes('reading manifest') ||
|
||||
lowerStatus.includes('calculating') ||
|
||||
lowerStatus.includes('extracting') || // If PDF extraction status is sent
|
||||
lowerStatus.includes('loading data') || // From handleProjectChange initial state
|
||||
lowerStatus.includes('pending') || // e.g., Re-analysis pending
|
||||
lowerStatus.includes('triggered'); // e.g., Manual analysis triggered...
|
||||
}
|
||||
|
||||
// Function to update the selected project state globally
|
||||
function setSelectedProject(projectName) {
|
||||
selectedProjectName = projectName;
|
||||
selectedProject = projectName; // Keep both synced for now
|
||||
console.log(`[State] Selected project updated to: ${selectedProjectName}`);
|
||||
}
|
||||
|
||||
// --- Export (if using modules in the future) ---
|
||||
// export { chartInstancesScada, chartInstancesDrawing, currentProjectData, selectedProjectName, ... };
|
||||
// For now, these are global, but designed for future modularity.
|
||||
532
static/js/ui.js
Normal file
532
static/js/ui.js
Normal file
@ -0,0 +1,532 @@
|
||||
// --- UI Update Functions ---
|
||||
|
||||
// Store references to frequently used DOM elements
|
||||
const uiElements = {
|
||||
overallScadaProgress: document.getElementById('overall-scada-progress'),
|
||||
scadaPanelsProgress: document.getElementById('scada-panels-progress'),
|
||||
overallDrawingProgress: document.getElementById('overall-drawing-progress'),
|
||||
drawingPanelsProgress: document.getElementById('drawing-panels-progress'),
|
||||
panelsConflicts: document.getElementById('panels-conflicts'),
|
||||
overallScadaText: document.getElementById('overall-scada-text'),
|
||||
overallDrawingText: document.getElementById('overall-drawing-text'),
|
||||
conflictCountBadge: document.getElementById('conflict-count'),
|
||||
statusBarProjectName: document.getElementById('selected-project-status-name'),
|
||||
statusBarMessage: document.getElementById('status-message'),
|
||||
statusBarCommit: document.getElementById('last-commit'),
|
||||
scadaContent: document.getElementById('scada-content'),
|
||||
drawingsContent: document.getElementById('drawings-content'),
|
||||
conflictsContent: document.getElementById('conflicts-content'),
|
||||
navLinks: document.querySelectorAll('.nav-link'),
|
||||
projectNameDisplays: document.querySelectorAll('.project-name-display'),
|
||||
// Status message elements for Manage Files modal
|
||||
manageFilesStatus: document.getElementById('manageFilesStatus'),
|
||||
uploadStatus: document.getElementById('uploadStatus'),
|
||||
analysisTriggerStatus: document.getElementById('analysisTriggerStatus'),
|
||||
deleteProjectStatus: document.getElementById('deleteProjectStatus'),
|
||||
uploadManifestStatus: document.getElementById('uploadManifestStatus')
|
||||
};
|
||||
|
||||
// --- Loading Indicators ---
|
||||
|
||||
/**
|
||||
* Displays a loading indicator within a container element.
|
||||
* @param {HTMLElement} containerElement - The DOM element to show the indicator in.
|
||||
* @param {string} message - The message to display below the spinner.
|
||||
*/
|
||||
function uiShowLoadingIndicator(containerElement, message = "Processing data...") {
|
||||
if (!containerElement) return;
|
||||
|
||||
let indicatorDiv = containerElement.querySelector('.processing-indicator');
|
||||
|
||||
// --- Check if projects exist ---
|
||||
const projectSelector = document.getElementById('projectSelector');
|
||||
const noProjectsExist = projectSelector && projectSelector.options.length === 1 && projectSelector.options[0].disabled;
|
||||
// Determine appropriate message if none was explicitly provided
|
||||
let displayMessage = message;
|
||||
if (message === "Processing data..." || message === "Select a project" || message === "Loading data...") { // Check against default/generic messages
|
||||
displayMessage = noProjectsExist ? "No projects available. Please add one." : (selectedProjectName ? "Loading data..." : "Select a project");
|
||||
}
|
||||
// --- End Check ---
|
||||
|
||||
if (!indicatorDiv) {
|
||||
// If indicator doesn't exist, clear the container first
|
||||
containerElement.innerHTML = '';
|
||||
// Create and add the indicator
|
||||
indicatorDiv = document.createElement('div');
|
||||
indicatorDiv.className = 'text-center p-4 processing-indicator';
|
||||
indicatorDiv.innerHTML = `
|
||||
<div class="spinner-border text-primary" role="status">
|
||||
<span class="visually-hidden">Loading...</span>
|
||||
</div>
|
||||
<p class="mt-2 fst-italic text-muted"></p>
|
||||
`;
|
||||
containerElement.prepend(indicatorDiv);
|
||||
} else {
|
||||
// If indicator already exists, ensure it's visible (it might have been hidden)
|
||||
indicatorDiv.style.display = 'block';
|
||||
}
|
||||
|
||||
// Update message (simple text sanitization)
|
||||
const messageElement = indicatorDiv.querySelector('p');
|
||||
if (messageElement) {
|
||||
// Use the determined displayMessage
|
||||
const safeMessage = displayMessage.replace(/</g, "<").replace(/>/g, ">");
|
||||
messageElement.textContent = safeMessage;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes the loading indicator from a container element and restores content visibility.
|
||||
* @param {HTMLElement} containerElement - The DOM element to clear the indicator from.
|
||||
*/
|
||||
function uiClearLoadingIndicator(containerElement) {
|
||||
if (!containerElement) return;
|
||||
|
||||
const indicatorDiv = containerElement.querySelector('.processing-indicator');
|
||||
if (indicatorDiv) {
|
||||
// Remove the indicator element completely
|
||||
indicatorDiv.remove();
|
||||
}
|
||||
|
||||
// No longer need to manage 'content-hidden-by-loader' class
|
||||
|
||||
// Remove default "Loading panel data..." placeholders if they still exist
|
||||
const placeholderP = Array.from(containerElement.querySelectorAll('p.fst-italic')).find(p =>
|
||||
p.textContent.toLowerCase().includes('loading') &&
|
||||
!p.closest('.processing-indicator')
|
||||
);
|
||||
if (placeholderP) {
|
||||
placeholderP.remove();
|
||||
}
|
||||
}
|
||||
|
||||
// --- Overall UI State ---
|
||||
|
||||
/**
|
||||
* Sets the entire UI to reflect a processing state, showing loading indicators.
|
||||
* @param {string} statusMsg - The status message to display in the indicators.
|
||||
*/
|
||||
function uiShowProcessingState(statusMsg = "Loading data...") {
|
||||
console.log(`[UI] Setting processing state: "${statusMsg}"`);
|
||||
const containers = [
|
||||
uiElements.overallScadaProgress,
|
||||
uiElements.scadaPanelsProgress,
|
||||
uiElements.overallDrawingProgress,
|
||||
uiElements.drawingPanelsProgress,
|
||||
uiElements.panelsConflicts
|
||||
];
|
||||
|
||||
// Destroy existing charts (delegated to chartManager)
|
||||
chartManagerDestroyAll();
|
||||
|
||||
// Show loading indicator in all main content containers
|
||||
containers.forEach(container => {
|
||||
if (container) {
|
||||
uiShowLoadingIndicator(container, statusMsg);
|
||||
}
|
||||
});
|
||||
|
||||
// Clear text content that is updated directly
|
||||
if (uiElements.overallScadaText) uiElements.overallScadaText.textContent = '';
|
||||
if (uiElements.overallDrawingText) uiElements.overallDrawingText.textContent = '';
|
||||
if (uiElements.conflictCountBadge) {
|
||||
uiElements.conflictCountBadge.textContent = '...';
|
||||
uiElements.conflictCountBadge.style.display = 'inline-block'; // Show badge while loading
|
||||
}
|
||||
|
||||
// Ensure the currently selected section's container is visible
|
||||
// (uiShowSection handles this, but good belt-and-braces)
|
||||
const sectionId = currentVisibleSection; // Assumes currentVisibleSection is accessible (global state)
|
||||
if (sectionId === 'scada' && uiElements.scadaContent) uiElements.scadaContent.style.display = 'block';
|
||||
else if (sectionId === 'drawings' && uiElements.drawingsContent) uiElements.drawingsContent.style.display = 'block';
|
||||
else if (sectionId === 'conflicts' && uiElements.conflictsContent) uiElements.conflictsContent.style.display = 'block';
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears loading indicators and prepares the UI for content rendering.
|
||||
* Note: Actual content rendering is triggered by calling core update functions.
|
||||
*/
|
||||
function uiClearProcessingState() {
|
||||
console.log(`[UI] Clearing processing state.`);
|
||||
const containers = [
|
||||
uiElements.overallScadaProgress,
|
||||
uiElements.scadaPanelsProgress,
|
||||
uiElements.overallDrawingProgress,
|
||||
uiElements.drawingPanelsProgress,
|
||||
uiElements.panelsConflicts
|
||||
];
|
||||
containers.forEach(container => {
|
||||
if (container) uiClearLoadingIndicator(container);
|
||||
});
|
||||
}
|
||||
|
||||
// --- Section/Tab Navigation ---
|
||||
|
||||
/**
|
||||
* Shows the specified content section and hides others. Updates active nav link.
|
||||
* @param {string} sectionId - 'scada', 'drawings', or 'conflicts'.
|
||||
*/
|
||||
function uiShowSection(sectionId) {
|
||||
console.log("[UI] Showing section:", sectionId);
|
||||
// Hide all sections first
|
||||
if (uiElements.scadaContent) uiElements.scadaContent.style.display = 'none';
|
||||
if (uiElements.drawingsContent) uiElements.drawingsContent.style.display = 'none';
|
||||
if (uiElements.conflictsContent) uiElements.conflictsContent.style.display = 'none';
|
||||
|
||||
let elementToShow = null;
|
||||
if (sectionId === 'scada' && uiElements.scadaContent) elementToShow = uiElements.scadaContent;
|
||||
else if (sectionId === 'drawings' && uiElements.drawingsContent) elementToShow = uiElements.drawingsContent;
|
||||
else if (sectionId === 'conflicts' && uiElements.conflictsContent) elementToShow = uiElements.conflictsContent;
|
||||
|
||||
if (elementToShow) {
|
||||
elementToShow.style.display = 'block';
|
||||
// Update global state (This might move to an event handler later)
|
||||
currentVisibleSection = sectionId;
|
||||
console.log(`[UI] Current visible section set to: ${currentVisibleSection}`);
|
||||
|
||||
// Trigger redraw of the newly visible section
|
||||
// Needs access to global state: currentProjectData, selectedProjectName, isAnalysisGloballyActive
|
||||
const projectData = currentProjectData[selectedProjectName];
|
||||
// Check if analysis is globally marked as active OR if the specific project status indicates processing
|
||||
const analysisIsActive = typeof isAnalysisGloballyActive !== 'undefined' && isAnalysisGloballyActive;
|
||||
const projectIsProcessing = projectData && isProcessing(projectData.status); // isProcessing needs to be accessible
|
||||
|
||||
if (analysisIsActive || projectIsProcessing) {
|
||||
const statusMsg = projectData?.status || "Analysis in progress..."; // Use project status if available, otherwise generic message
|
||||
console.log(`[UI] Section ${sectionId} shown, project processing. Status: "${statusMsg}"`);
|
||||
// Ensure loading indicator is visible in the right place
|
||||
if (sectionId === 'scada') {
|
||||
uiShowLoadingIndicator(uiElements.overallScadaProgress, statusMsg);
|
||||
uiShowLoadingIndicator(uiElements.scadaPanelsProgress, statusMsg);
|
||||
} else if (sectionId === 'drawings') {
|
||||
uiShowLoadingIndicator(uiElements.overallDrawingProgress, statusMsg);
|
||||
uiShowLoadingIndicator(uiElements.drawingPanelsProgress, statusMsg);
|
||||
} else if (sectionId === 'conflicts') {
|
||||
uiShowLoadingIndicator(uiElements.panelsConflicts, statusMsg);
|
||||
}
|
||||
chartManagerDestroyAll(); // Ensure charts are gone if processing
|
||||
|
||||
} else if (projectData) { // Project exists and is NOT processing
|
||||
// Project is ready, draw the content immediately
|
||||
console.log(`[UI] Section ${sectionId} shown, project ready. Drawing content.`);
|
||||
|
||||
// Double check status before actually drawing (good practice)
|
||||
const currentData = currentProjectData[selectedProjectName];
|
||||
const stillNotProcessing = currentData && !isProcessing(currentData.status);
|
||||
const stillGloballyInactive = typeof isAnalysisGloballyActive !== 'undefined' && !isAnalysisGloballyActive;
|
||||
|
||||
if (stillNotProcessing && stillGloballyInactive) {
|
||||
// Explicitly clear any loading indicators before drawing
|
||||
uiClearProcessingState();
|
||||
|
||||
// Call core update functions directly
|
||||
if (sectionId === 'scada') updateUIScadaCore(currentData);
|
||||
else if (sectionId === 'drawings') updateUIDrawingCore(currentData);
|
||||
else if (sectionId === 'conflicts') updateUIConflictsCore(currentData);
|
||||
} else {
|
||||
// If state somehow changed back to processing *just* as we switched tabs, show loading
|
||||
const currentStatusMsg = currentData?.status || (isAnalysisGloballyActive ? "Analysis in progress..." : "State changed...");
|
||||
console.log(`[UI] Status changed back to processing just before drawing for ${sectionId}. Status: "${currentStatusMsg}"`);
|
||||
uiShowProcessingState(currentStatusMsg);
|
||||
}
|
||||
|
||||
} else { // No project data found for the selected project
|
||||
console.log(`[UI] Section ${sectionId} shown, but no data for project ${selectedProjectName}. Showing loading.`);
|
||||
// Show loading indicator as data is missing or project not selected
|
||||
// --- Check if projects exist ---
|
||||
const projectSelectorCheck = document.getElementById('projectSelector');
|
||||
const noProjectsExistCheck = projectSelectorCheck && projectSelectorCheck.options.length === 1 && projectSelectorCheck.options[0].disabled;
|
||||
const msg = noProjectsExistCheck ? "No projects available. Please add one." : (selectedProjectName ? "Loading data..." : "Select a project");
|
||||
// --- End Check ---
|
||||
if (sectionId === 'scada') { uiShowLoadingIndicator(uiElements.overallScadaProgress, msg); uiShowLoadingIndicator(uiElements.scadaPanelsProgress, msg); }
|
||||
else if (sectionId === 'drawings') { uiShowLoadingIndicator(uiElements.overallDrawingProgress, msg); uiShowLoadingIndicator(uiElements.drawingPanelsProgress, msg); }
|
||||
else if (sectionId === 'conflicts') { uiShowLoadingIndicator(uiElements.panelsConflicts, msg); }
|
||||
}
|
||||
} else {
|
||||
console.error("[UI] Attempted to show unknown section:", sectionId);
|
||||
// Default back to SCADA maybe?
|
||||
if(uiElements.scadaContent) uiElements.scadaContent.style.display = 'block';
|
||||
currentVisibleSection = 'scada';
|
||||
}
|
||||
|
||||
// Update active nav link state
|
||||
uiElements.navLinks.forEach(link => {
|
||||
link.classList.remove('active');
|
||||
if (link.getAttribute('data-view') === sectionId) {
|
||||
link.classList.add('active');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// --- Content Updates ---
|
||||
|
||||
/**
|
||||
* Updates all elements displaying the current project name.
|
||||
* @param {string} projectName - The name of the project.
|
||||
*/
|
||||
function uiUpdateProjectNameDisplay(projectName) {
|
||||
uiElements.projectNameDisplays.forEach(el => el.textContent = projectName || '...');
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the status bar content.
|
||||
* @param {string} projectName - Name of the current project.
|
||||
* @param {string} statusMsg - Status message to display.
|
||||
* @param {string} commitHash - Last commit hash (abbreviated).
|
||||
*/
|
||||
function uiUpdateStatusBar(projectName, statusMsg, commitHash) {
|
||||
if (uiElements.statusBarProjectName) uiElements.statusBarProjectName.textContent = projectName || '...';
|
||||
if (uiElements.statusBarMessage) uiElements.statusBarMessage.textContent = statusMsg || 'N/A';
|
||||
if (uiElements.statusBarCommit) uiElements.statusBarCommit.textContent = commitHash ? commitHash.substring(0, 7) : 'N/A';
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the text displaying overall statistics for SCADA or Drawing views.
|
||||
* @param {string} context - 'scada' or 'drawing'.
|
||||
* @param {number} foundCount - Number of items found.
|
||||
* @param {number} totalCount - Total number of items.
|
||||
* @param {number} percentage - Calculated percentage found.
|
||||
*/
|
||||
function uiUpdateOverallStatsText(context, foundCount, totalCount, percentage) {
|
||||
const element = context === 'scada' ? uiElements.overallScadaText : uiElements.overallDrawingText;
|
||||
if (element) {
|
||||
element.textContent = context === 'scada'
|
||||
? `Found in SCADA: ${foundCount}/${totalCount} (${percentage}%)`
|
||||
: `Found in Drawing: ${foundCount}/${totalCount} (${percentage}%)`;
|
||||
} else {
|
||||
console.warn(`[UI] Element not found for overall stats text: ${context}`);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the conflicts table display.
|
||||
* @param {object} panelsData - The panels data containing conflict lists.
|
||||
*/
|
||||
function uiUpdateConflictsTable(panelsData) {
|
||||
const container = uiElements.panelsConflicts;
|
||||
if (!container) return;
|
||||
|
||||
container.innerHTML = ''; // Clear previous content
|
||||
|
||||
let totalConflicts = 0;
|
||||
let panelsWithConflicts = 0;
|
||||
|
||||
if (!panelsData || Object.keys(panelsData).length === 0) {
|
||||
container.innerHTML = '<p class="text-center fst-italic">No panel data available yet.</p>';
|
||||
} else {
|
||||
const sortedPanels = Object.keys(panelsData).sort();
|
||||
sortedPanels.forEach(panelName => {
|
||||
const panel = panelsData[panelName];
|
||||
const conflictsList = panel.found_scada_only_list || [];
|
||||
if (conflictsList.length > 0) {
|
||||
panelsWithConflicts++;
|
||||
totalConflicts += conflictsList.length;
|
||||
|
||||
const panelHeader = document.createElement('h4');
|
||||
panelHeader.className = 'mt-4 mb-2';
|
||||
panelHeader.textContent = `${panelName} (${conflictsList.length} conflicts)`;
|
||||
container.appendChild(panelHeader);
|
||||
|
||||
const table = document.createElement('table');
|
||||
table.className = 'table table-sm table-striped table-hover table-bordered';
|
||||
table.innerHTML = `
|
||||
<thead>
|
||||
<tr><th>Alias</th><th>Panel</th><th>SCADA Status</th><th>Drawing Status</th><th>Equipment Type</th><th>Type of Conveyor</th></tr>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
`;
|
||||
const tbody = table.querySelector('tbody');
|
||||
conflictsList.sort((a, b) => a.alias.localeCompare(b.alias)).forEach(item => {
|
||||
const row = tbody.insertRow();
|
||||
row.classList.add('table-warning');
|
||||
row.insertCell().textContent = item.alias;
|
||||
row.insertCell().textContent = item.control_panel;
|
||||
row.insertCell().innerHTML = '<span class="status-yes">Yes</span>';
|
||||
row.insertCell().innerHTML = '<span class="status-no">No</span>';
|
||||
row.insertCell().textContent = item.equipment_type || 'N/A';
|
||||
row.insertCell().textContent = item.conveyor_type || 'N/A';
|
||||
});
|
||||
container.appendChild(table);
|
||||
}
|
||||
});
|
||||
if (panelsWithConflicts === 0) {
|
||||
container.innerHTML = '<p class="text-center fst-italic">No conflicts found across all panels.</p>';
|
||||
}
|
||||
}
|
||||
// Update total count badge
|
||||
if (uiElements.conflictCountBadge) {
|
||||
uiElements.conflictCountBadge.textContent = totalConflicts;
|
||||
uiElements.conflictCountBadge.style.display = totalConflicts > 0 ? 'inline-block' : 'none';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears all project-specific display areas (charts, text, tables).
|
||||
*/
|
||||
function uiClearProjectDisplay() {
|
||||
console.log("[UI] Clearing project display.");
|
||||
// Clear charts (delegated)
|
||||
chartManagerDestroyAll();
|
||||
|
||||
// Clear text
|
||||
if (uiElements.overallScadaText) uiElements.overallScadaText.textContent = 'Found in SCADA: N/A';
|
||||
if (uiElements.overallDrawingText) uiElements.overallDrawingText.textContent = 'Found in Drawing: N/A';
|
||||
if (uiElements.conflictCountBadge) {
|
||||
uiElements.conflictCountBadge.textContent = '0';
|
||||
uiElements.conflictCountBadge.style.display = 'none';
|
||||
}
|
||||
|
||||
// Clear containers
|
||||
// --- Check if projects exist ---
|
||||
const projectSelector = document.getElementById('projectSelector');
|
||||
const noProjectsExist = projectSelector && projectSelector.options.length === 1 && projectSelector.options[0].disabled;
|
||||
const defaultMsg = noProjectsExist
|
||||
? "<p class=\"text-center fst-italic\">No projects loaded. Use 'Add Project' to create one.</p>"
|
||||
: "<p class=\"text-center fst-italic\">Select a project to view data.</p>";
|
||||
// --- End Check ---
|
||||
|
||||
if(uiElements.scadaPanelsProgress) uiElements.scadaPanelsProgress.innerHTML = defaultMsg;
|
||||
if(uiElements.drawingPanelsProgress) uiElements.drawingPanelsProgress.innerHTML = defaultMsg;
|
||||
if(uiElements.panelsConflicts) uiElements.panelsConflicts.innerHTML = defaultMsg;
|
||||
}
|
||||
|
||||
// --- Status Messages ---
|
||||
|
||||
/**
|
||||
* Shows a status message in a specific element, optionally auto-clearing.
|
||||
* @param {HTMLElement} element - The status display element.
|
||||
* @param {string} message - The message to show.
|
||||
* @param {string} type - 'info', 'success', 'warning', 'danger'.
|
||||
* @param {boolean} autoClear - Whether to hide the message after a delay.
|
||||
* @param {number} delay - Delay in milliseconds for auto-clear.
|
||||
*/
|
||||
function uiShowStatusMessage(element, message, type = 'info', autoClear = true, delay = 5000) {
|
||||
if (!element) return;
|
||||
// Use text-based classes for inline messages, alert classes for block messages
|
||||
const isAlert = element.classList.contains('alert');
|
||||
if (isAlert) {
|
||||
element.className = `mt-3 alert alert-${type}`;
|
||||
} else {
|
||||
element.className = `mt-2 text-${type}`;
|
||||
if (type === 'danger' || type === 'warning' || type === 'success') {
|
||||
element.className += ' fw-bold';
|
||||
}
|
||||
}
|
||||
element.textContent = message;
|
||||
element.style.display = 'block';
|
||||
|
||||
// Clear previous timeouts if any
|
||||
if (element.timeoutId) clearTimeout(element.timeoutId);
|
||||
element.timeoutId = null; // Clear the stored ID
|
||||
|
||||
if (autoClear) {
|
||||
element.timeoutId = setTimeout(() => {
|
||||
element.style.display = 'none';
|
||||
element.timeoutId = null;
|
||||
}, delay);
|
||||
}
|
||||
}
|
||||
|
||||
function uiShowManageFilesStatus(message, type = 'info') {
|
||||
uiShowStatusMessage(uiElements.manageFilesStatus, message, type, false); // Not auto-clearing by default
|
||||
}
|
||||
|
||||
function uiShowUploadStatus(message, type = 'info', autoClear = true) {
|
||||
uiShowStatusMessage(uiElements.uploadStatus, message, type, autoClear, 5000);
|
||||
}
|
||||
|
||||
function uiShowAnalysisTriggerStatus(message, type = 'info', autoClear = true) {
|
||||
uiShowStatusMessage(uiElements.analysisTriggerStatus, message, type, autoClear, 8000);
|
||||
}
|
||||
|
||||
function uiShowDeleteProjectStatus(message, type = 'info', autoClear = true) {
|
||||
uiShowStatusMessage(uiElements.deleteProjectStatus, message, type, autoClear, 6000);
|
||||
}
|
||||
|
||||
function uiShowUploadManifestStatus(message, type = 'info', autoClear = true) {
|
||||
uiShowStatusMessage(uiElements.uploadManifestStatus, message, type, autoClear, 5000);
|
||||
}
|
||||
|
||||
/** Clears all status messages within the Manage Files modal. */
|
||||
function uiClearManageFilesStatusMessages() {
|
||||
const elements = [
|
||||
uiElements.manageFilesStatus,
|
||||
uiElements.uploadStatus,
|
||||
uiElements.analysisTriggerStatus,
|
||||
uiElements.deleteProjectStatus,
|
||||
uiElements.uploadManifestStatus
|
||||
];
|
||||
elements.forEach(element => {
|
||||
if (element) {
|
||||
element.style.display = 'none';
|
||||
if (element.timeoutId) {
|
||||
clearTimeout(element.timeoutId);
|
||||
element.timeoutId = null;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// --- Project Selector Update ---
|
||||
/**
|
||||
* Rebuilds the project selector dropdown based on the provided list.
|
||||
* Tries to maintain the current selection if possible.
|
||||
* @param {Array<string>} incomingProjects - List of project names.
|
||||
* @returns {boolean} - True if the selection was changed/reset, false otherwise.
|
||||
*/
|
||||
function uiUpdateProjectSelector(incomingProjects) {
|
||||
const projectSelector = document.getElementById('projectSelector'); // Get fresh reference
|
||||
if (!projectSelector) return false;
|
||||
|
||||
const currentOptions = Array.from(projectSelector.options).map(opt => opt.value);
|
||||
const previouslySelected = projectSelector.value;
|
||||
let selectionChanged = false;
|
||||
|
||||
// Check if the list of projects has actually changed
|
||||
const hasChanged = incomingProjects.length !== currentOptions.length ||
|
||||
incomingProjects.some(p => !currentOptions.includes(p)) ||
|
||||
currentOptions.some(p => !incomingProjects.includes(p));
|
||||
|
||||
if (hasChanged) {
|
||||
console.log("[UI] Project list changed. Rebuilding project selector.");
|
||||
projectSelector.innerHTML = ''; // Clear existing options
|
||||
|
||||
if (incomingProjects.length > 0) {
|
||||
incomingProjects.sort().forEach(projName => {
|
||||
const option = document.createElement('option');
|
||||
option.value = projName;
|
||||
option.textContent = projName;
|
||||
projectSelector.appendChild(option);
|
||||
});
|
||||
// Try to re-select the previous project if it still exists
|
||||
if (incomingProjects.includes(previouslySelected)) {
|
||||
projectSelector.value = previouslySelected;
|
||||
} else {
|
||||
projectSelector.selectedIndex = 0; // Select the first one
|
||||
selectionChanged = true; // Selection was reset to the first item
|
||||
}
|
||||
} else {
|
||||
// Handle empty project list
|
||||
const option = document.createElement('option');
|
||||
option.value = '';
|
||||
option.textContent = 'No projects found';
|
||||
option.disabled = true;
|
||||
projectSelector.appendChild(option);
|
||||
selectionChanged = true; // Selection is now empty/disabled
|
||||
}
|
||||
}
|
||||
|
||||
// Update button state based on current selection (even if list didn't change)
|
||||
const manageFilesBtn = document.getElementById('manageFilesBtn'); // Get fresh reference
|
||||
if (manageFilesBtn) {
|
||||
manageFilesBtn.disabled = !projectSelector.value;
|
||||
}
|
||||
|
||||
return selectionChanged;
|
||||
}
|
||||
|
||||
|
||||
// --- Export (if using modules in the future) ---
|
||||
// export { uiShowLoadingIndicator, uiClearLoadingIndicator, ... };
|
||||
@ -57,8 +57,8 @@
|
||||
<div id="overall-scada-progress" class="chart-container">
|
||||
<span class="chart-label">Overall SCADA Progress</span>
|
||||
<canvas id="overall-scada-chart-canvas" class="panel-chart-canvas" style="max-width: 200px; max-height: 200px;"></canvas>
|
||||
<div id="overall-scada-text" style="font-weight: bold; margin-top: 10px;">Found in SCADA: 0/0 (0%)</div>
|
||||
</div>
|
||||
<div id="overall-scada-text" class="text-center" style="font-weight: bold; margin-top: 10px;">Found in SCADA: 0/0 (0%)</div>
|
||||
|
||||
<hr>
|
||||
|
||||
@ -76,8 +76,8 @@
|
||||
<div id="overall-drawing-progress" class="chart-container">
|
||||
<span class="chart-label">Overall Drawing Progress</span>
|
||||
<canvas id="overall-drawing-chart-canvas" class="panel-chart-canvas" style="max-width: 200px; max-height: 200px;"></canvas>
|
||||
<div id="overall-drawing-text" style="font-weight: bold; margin-top: 10px;">Found in Drawing: 0/0 (0%)</div>
|
||||
</div>
|
||||
<div id="overall-drawing-text" class="text-center" style="font-weight: bold; margin-top: 10px;">Found in Drawing: 0/0 (0%)</div>
|
||||
|
||||
<hr>
|
||||
|
||||
@ -249,8 +249,8 @@
|
||||
<!-- Pass initial data to JavaScript -->
|
||||
<script>
|
||||
// Render Jinja data into intermediate JS variables
|
||||
const initialProjectsJson = {{ projects | tojson }};
|
||||
const initialStatusJson = {{ initial_statuses | tojson }};
|
||||
const initialProjectsJson = {{ projects | tojson | safe }};
|
||||
const initialStatusJson = {{ initial_statuses | tojson | safe }};
|
||||
|
||||
// Embed initial data directly into the page for faster initial load
|
||||
const initialServerData = {
|
||||
@ -259,6 +259,14 @@
|
||||
// Note: Full progress data is not embedded initially, fetched via SSE
|
||||
};
|
||||
</script>
|
||||
<script src="/static/js/script.js"></script>
|
||||
<!-- Refactored JavaScript Modules -->
|
||||
<script src="/static/js/state.js"></script>
|
||||
<script src="/static/js/api.js"></script>
|
||||
<script src="/static/js/chartManager.js"></script>
|
||||
<script src="/static/js/modalManager.js"></script>
|
||||
<script src="/static/js/ui.js"></script>
|
||||
<script src="/static/js/sse.js"></script>
|
||||
<script src="/static/js/script.js"></script> <!-- Core logic/coordinators -->
|
||||
<script src="/static/js/events.js"></script> <!-- Event listeners (must be last) -->
|
||||
</body>
|
||||
</html>
|
||||
Loading…
x
Reference in New Issue
Block a user