Monday, February 11, 2019

PowerSchool Transportation Reports



File: ssis_transportation.html
<!DOCTYPE html>
<html>
<!-- start right frame -->
<head>
    <title>Transportation</title>
    ~[wc:UI_js_includes]
    ~[wc:commonscripts]
    <link href="/images/css/screen.css" rel="stylesheet" media="screen">
    <link href="/images/css/print.css" rel="stylesheet" media="print">


</head>
<body>
    ~[wc:admin_header_frame_css]
 
    <!-- breadcrumb start -->
    <a href="/admin/home.html" target="_top">~[text:psx.html.admin_students.unlimitedcontacts.start_page]</a> &gt;
    <a href="home.html?selectstudent=nosearch" target="_top">~[text:psx.html.admin_students.unlimitedcontacts.student_selection]</a> &gt;
    Transportation Roster
    <!-- breadcrumb end -->
 
    ~[wc:admin_navigation_frame_css]

<!-- start of title and student content -->


<table width="100%">
<tr>
<td background="/images/transparent.gif">

<!-- title -->
<h1>Transportation Roster</h1>
<!-- title -->


<form name="searchform" action="ssis_transportation.html" method="GET" style="float:left;width:100%">
<table>
<tr>
                        <td  style="background-color:white;">Filter by Bus: </td>
<td style="background-color:white;">
<a href="ssis_transportation.html?busnumber=Bus 1">Bus 1</a>&nbsp;|&nbsp;
<a href="ssis_transportation.html?busnumber=Bus 2">Bus 2</a>&nbsp;|&nbsp;
<a href="ssis_transportation.html?busnumber=Bus 3">Bus 3</a>&nbsp;|&nbsp;
<a href="ssis_transportation.html?busnumber=Bus 4">Bus 4</a>&nbsp;|&nbsp;
<a href="ssis_transportation.html?busnumber=Bus 5">Bus 5</a>&nbsp;|&nbsp;
<a href="ssis_transportation.html?busnumber=Bus 6">Bus 6</a>&nbsp;|&nbsp;
<a href="ssis_transportation.html?busnumber=Bus 7">Bus 7</a>&nbsp;|&nbsp;
<a href="ssis_transportation.html?busnumber=Bus 8">Bus 8</a>&nbsp;|&nbsp;
<a href="ssis_transportation.html?busnumber=Van 1">Van 1</a>&nbsp;|&nbsp;
<a href="ssis_transportation.html?busnumber=Van 2">Van 2</a>&nbsp;|&nbsp;
<a href="ssis_transportation.html?busnumber=Van 3">Van 3</a>&nbsp;|&nbsp;
<a href="ssis_transportation.html?busnumber=Van 4">Van 4</a>&nbsp;|&nbsp;
<a href="ssis_transportation.html?busnumber=Van 5">Van 5</a>&nbsp;|&nbsp;
<a href="ssis_transportation.html?busnumber=Van 6">Van 6</a>&nbsp;|&nbsp;
<a href="ssis_transportation.html?busnumber=Van 7">Van 7</a>&nbsp;|&nbsp;
<a href="ssis_transportation.html?busnumber=ALL">ALL</a>
</td>

</tr>
</table>
</form>

<br><br>
<p id="demo" style="font-size: 1.5em;">Driver and Monitor Information Replaced Here.</p>
<script type="text/javascript">

if ('~(gpv.busnumber)'=='Bus 1') {
  document.getElementById("demo").innerHTML = "Driver: Dang Cong Minh (84) 93-356-9755 | Monitor: Dang Thi Thu Hong (84) 93-267-8310";
} else if ('~(gpv.busnumber)'=='Bus 2') {
  document.getElementById("demo").innerHTML = "Driver: Mr. Lam (84) 90-690-6030 | Monitor: Le Thi Hoang (84) 93-240-1677";
} else if ('~(gpv.busnumber)'=='Bus 3') {
  document.getElementById("demo").innerHTML = "Driver: Duong Hoang Hai (84) 93-262-3161 | Monitor: Nguyen Thi Huong Lan (84) 93-839-3678";
} else if ('~(gpv.busnumber)'=='Bus 4') {
  document.getElementById("demo").innerHTML = "Driver: Nguyen Thanh Long (Minh) (84) 90-909-5221 | Monitor: Le Thi My Ngoc (84) 96-183-0728";
} else if ('~(gpv.busnumber)'=='Bus 5') {
  document.getElementById("demo").innerHTML = "Driver: Nguyen Huu Duc (84) 90-217-4558 | Monitor: Tran Thi Thu Thao (84) 90-286-0135";
} else if ('~(gpv.busnumber)'=='Bus 6') {
  document.getElementById("demo").innerHTML = "Driver: Pham Anh Tuan (84) 93-867-7970 | Monitor: Nguyen Le Kim Thuy (84) 126-711-5315";
} else if ('~(gpv.busnumber)'=='Bus 7') {
  document.getElementById("demo").innerHTML = "Driver: Tran Chi Linh (84) 98-853-0258 | Monitor: Ho Thi Thu Trang (84) 90-648-3441";
} else if ('~(gpv.busnumber)'=='Bus 8') {
  document.getElementById("demo").innerHTML = "Driver: Mr. Binh (84) 92-444-6698 | Monitor: Lu Vi Thuy (84) 93-760-3832";
} else if ('~(gpv.busnumber)'=='Van 1') {
  document.getElementById("demo").innerHTML = "Driver: Duong Quang Hieu (84) 90-316-2641 | Monitor: Nguyen Ngoc (84) 93-805-0819";
} else if ('~(gpv.busnumber)'=='Van 2') {
  document.getElementById("demo").innerHTML = "Driver: Mr. Phong (84) 91-914-7306 | Monitor: Phuong Thi My Dung (84) 93-803-2507";
} else if ('~(gpv.busnumber)'=='Van 3') {
  document.getElementById("demo").innerHTML = "Driver: Pham Phuc Dai (84) 90-939-3472 | Monitor: Tran Thi Han Hoan (84) 91-553-3467";
} else if ('~(gpv.busnumber)'=='Van 4') {
  document.getElementById("demo").innerHTML = "Driver: Vu Thai Hong (Long) (84) 91-360-1602 | Monitor: Duong Thi Lanh (84) 90-314-9296";
} else if ('~(gpv.busnumber)'=='Van 5') {
  document.getElementById("demo").innerHTML = "Driver: Nguyen Hoang Thich (84) 93-402-6073 | Monitor: Duong Thi Hien (84) 93-785-4299";
} else if ('~(gpv.busnumber)'=='Van 6') {
  document.getElementById("demo").innerHTML = "Driver: Le Hoang An (84) 91-803-1819 | Monitor: Luong Thi Thu Yen (84) 90-253-2862";
} else if ('~(gpv.busnumber)'=='Van 7') {
  document.getElementById("demo").innerHTML = "Driver: Nguyen Tan Buu (84) 90-589-6220 | Monitor: Phan Thi Kim Cuc (84) 93-834-2083";
} else {
  document.getElementById("demo").innerHTML = ".";
}
</script>

<table id="transportationExport" class="grid" style="width:100%">
<tr>
  <th width='300px'></th>
  <th>StudentID</th>
  <th>Students</th>
  <th>Grade/Gender<br>HR Teacher</th>
  <th>Address</th>
  <th colspan=2>Contact Information</th>
  <th>Special Instructions</th>
</tr>


~[tlist_sql;
WITH ROUTE AS (
  SELECT t.BUSNUMBER AS BUSNUMBER, s.ID AS STUDENTDCID,
    TO_CHAR(TRUNC(t.departuretime/3600),'FM9900') || chr(58) ||
    TO_CHAR(TRUNC(MOD(t.departuretime,3600)/60),'FM00') ||
    ' ' || TO_CHAR(t.address) AS T_ADDRESS,
    s.STUDENT_NUMBER as STUDENT_NUMBER,
    s.LASTFIRST AS STUDENTLASTFIRST,
    DECODE(s.grade_level,0,'K',-2,'EC3',-1,'EC4',TRIM(TO_CHAR(s.grade_level))) AS GRADE,
    s.gender AS GENDER,
    u.SSIS_HR_TEACHER AS HR_TEACHER,
    s.street || '&lt;br&gt;' || u.ssis_student_ward || ', ' || u.ssis_student_district || '&lt;br&gt;' || s.city  AS ADDRESS,
    TO_CHAR(t.SPECIALINSTRUCTIONS) AS SPECIALINSTRUCTIONS,
    ROW_NUMBER() OVER (PARTITION BY t.BUSNUMBER ORDER BY t.BUSNUMBER)AS RN
  FROM TRANSPORTATION t
    INNER JOIN STUDENTS s ON s.id=t.STUDENTID
    INNER JOIN U_StudentsUserFields u ON s.DCID = u.StudentsDCID
  WHERE s.ENROLL_STATUS =0
  AND t.fromto = 'To'
  ~[if#1.~(gpv.busnumber)=]
        /* NO bus number provided. */
        AND t.busnumber = 'zzz'
  [else#1]
      ~[if#2.~(gpv.busnumber)=ALL]
          AND t.busnumber LIKE '%'
      [else#2]
      /* Bus number provided. . */
      AND t.busnumber = ('~[gpv:busnumber]')
      [/if#2]
  [/if#1]
),
StudentsParents AS (
    SELECT DISTINCT
        DECODE(co.ContactRelationship,'Mother','M','Father','F','Step-Mother','M','Step-Father','F','X') ContactRelationship,
        co.StudentDCID AS STUDENTDCID,
        co.ContactLastFirst,
        pp.PhoneNumberasentered,
        e.EmailAddress
    FROM
        PSSIS_STU_Contact_Act_Emerg co
        LEFT JOIN PSSIS_Person_Phone pp on pp.PersonID = co.ContactPersonID AND pp.isPreferred = 1
        LEFT JOIN PSSIS_Person_Email e  on e.PersonID  = co.ContactPersonID AND e.isPrimaryEmailAddress = 1
    WHERE co.ContactRelationship in ('Mother','Step-Mother','Father','Step-Father')
)
SELECT ID, BUSNUMBER,
       MONITORDETAIL,
       STUDENT_NUMBER, STUDENTLASTFIRST, GRADE, GENDER,
       HR_TEACHER,
       ADDRESS,
       Mother,
       Father,
       SPECIALINSTRUCTIONS
FROM(
   SELECT RN AS ID, BUSNUMBER,
          '&lt;font size=4&gt;&lt;strong&gt;' || BUSNUMBER || '&lt;/strong&gt;&lt;/font&gt;' ||
          '&lt;br&gt; .'  as MONITORDETAIL,
          0 AS STUDENT_NUMBER, '' AS STUDENTLASTFIRST, '' AS GRADE, '' AS GENDER,
          '' AS HR_TEACHER,
          '' AS ADDRESS,
          '' AS SPECIALINSTRUCTIONS,
          '' AS Mother,
          '' AS Father,
          'Group' As RowType
   FROM ROUTE r
    LEFT JOIN StudentsParents m ON r.StudentDCID = m.StudentDCID AND m.ContactRelationship = 'M'
    LEFT JOIN StudentsParents f ON r.StudentDCID = f.StudentDCID AND f.ContactRelationship = 'F'
   WHERE RN = 1
   UNION ALL
   SELECT RN AS ID, BUSNUMBER,
          T_ADDRESS AS MONITORDETAIL,
          STUDENT_NUMBER, STUDENTLASTFIRST, GRADE, GENDER,
          HR_TEACHER,
          ADDRESS,
          SPECIALINSTRUCTIONS,
          m.ContactLastFirst || '&lt;br&gt;' || m.PhoneNumberasentered || '&lt;br&gt;' || m.EmailAddress AS Mother,
          f.ContactLastFirst || '&lt;br&gt;' || f.PhoneNumberasentered || '&lt;br&gt;' || f.EmailAddress AS Father,
          'Item' As RowType
   FROM ROUTE r
    LEFT JOIN StudentsParents m ON r.StudentDCID = m.StudentDCID AND m.ContactRelationship = 'M'
    LEFT JOIN StudentsParents f ON r.StudentDCID = f.StudentDCID AND f.ContactRelationship = 'F'
)X
ORDER BY BUSNUMBER ASC
, CASE WHEN RowType='Group' THEN 0 ELSE 1 END ASC
, MONITORDETAIL ASC
, STUDENTLASTFIRST ASC
;]
  <tr>
    <td style="display:none"> ~(ID) </td>
    <td style="display:none"> ~(BUSNUMBER) </td>
    <td>~(MONITORDETAIL)</td>
    <td> ~(STUDENT_NUMBER)</td>
    <td> ~(STUDENTLASTFIRST)</td>
    <td>~(GRADE) / ~(GENDER) <br> ~(HR_TEACHER)</td>
    <td> ~(ADDRESS)</td>
    <td> ~(Mother)</td>
    <td> ~(Father)</td>
    <td> ~(SPECIALINSTRUCTIONS)</td>
  </tr>

[/tlist_sql]

</table>
<!-- end of title and student content -->

</body>
</html>



File: ssis_transportation_attendance.html

<!DOCTYPE html>
<html>
<!-- start right frame -->
<head>
    <title>Transportation Attendance</title>
    ~[wc:UI_js_includes]
    ~[wc:commonscripts]
    <link href="/images/css/screen.css" rel="stylesheet" media="screen">
    <link href="/images/css/print.css" rel="stylesheet" media="print">


</head>
<body>
    ~[wc:admin_header_frame_css]
 
    <!-- breadcrumb start -->
    <a href="/admin/home.html" target="_top">~[text:psx.html.admin_students.unlimitedcontacts.start_page]</a> &gt;
    <a href="home.html?selectstudent=nosearch" target="_top">~[text:psx.html.admin_students.unlimitedcontacts.student_selection]</a> &gt;
    Transportation Attendance
    <!-- breadcrumb end -->
 
    ~[wc:admin_navigation_frame_css]

<!-- start of title and student content -->


<table width="100%">
<tr>
<td background="/images/transparent.gif">

<!-- title -->
<h1>Transportation Attendance</h1>
<h3>Period Coverage: ____________________________</h3>
<!-- title -->


<form name="searchform" action="ssis_transportation_attendance.html" method="GET" style="float:left;width:100%">
<table>
<tr>
      <td  style="background-color:white;">Filter by Bus: </td>
<td style="background-color:white;">
<a href="ssis_transportation_attendance.html?busnumber=Bus 1">Bus 1</a>&nbsp;|&nbsp;
<a href="ssis_transportation_attendance.html?busnumber=Bus 2">Bus 2</a>&nbsp;|&nbsp;
<a href="ssis_transportation_attendance.html?busnumber=Bus 3">Bus 3</a>&nbsp;|&nbsp;
<a href="ssis_transportation_attendance.html?busnumber=Bus 4">Bus 4</a>&nbsp;|&nbsp;
<a href="ssis_transportation_attendance.html?busnumber=Bus 5">Bus 5</a>&nbsp;|&nbsp;
<a href="ssis_transportation_attendance.html?busnumber=Bus 6">Bus 6</a>&nbsp;|&nbsp;
<a href="ssis_transportation_attendance.html?busnumber=Bus 7">Bus 7</a>&nbsp;|&nbsp;
<a href="ssis_transportation_attendance.html?busnumber=Bus 8">Bus 8</a>&nbsp;|&nbsp;
<a href="ssis_transportation_attendance.html?busnumber=Van 1">Van 1</a>&nbsp;|&nbsp;
<a href="ssis_transportation_attendance.html?busnumber=Van 2">Van 2</a>&nbsp;|&nbsp;
<a href="ssis_transportation_attendance.html?busnumber=Van 3">Van 3</a>&nbsp;|&nbsp;
<a href="ssis_transportation_attendance.html?busnumber=Van 4">Van 4</a>&nbsp;|&nbsp;
<a href="ssis_transportation_attendance.html?busnumber=Van 5">Van 5</a>&nbsp;|&nbsp;
<a href="ssis_transportation_attendance.html?busnumber=Van 6">Van 6</a>&nbsp;|&nbsp;
<a href="ssis_transportation_attendance.html?busnumber=Van 7">Van 7</a>&nbsp;|&nbsp;
<a href="ssis_transportation_attendance.html?busnumber=ALL">ALL</a>
</td>

</tr>
</table>
</form>

<br><br>
<p id="demo" style="font-size: 1.5em;">Driver and Monitor Information Replaced Here.</p>
<script type="text/javascript">

if ('~(gpv.busnumber)'=='Bus 1') {
  document.getElementById("demo").innerHTML = "Driver: Dang Cong Minh (84) 93-356-9755 | Monitor: Dang Thi Thu Hong (84) 93-267-8310";
} else if ('~(gpv.busnumber)'=='Bus 2') {
  document.getElementById("demo").innerHTML = "Driver: Mr. Lam (84) 90-690-6030 | Monitor: Le Thi Hoang (84) 93-240-1677";
} else if ('~(gpv.busnumber)'=='Bus 3') {
  document.getElementById("demo").innerHTML = "Driver: Duong Hoang Hai (84) 93-262-3161 | Monitor: Nguyen Thi Huong Lan (84) 93-839-3678";
} else if ('~(gpv.busnumber)'=='Bus 4') {
  document.getElementById("demo").innerHTML = "Driver: Nguyen Thanh Long (Minh) (84) 90-909-5221 | Monitor: Le Thi My Ngoc (84) 96-183-0728";
} else if ('~(gpv.busnumber)'=='Bus 5') {
  document.getElementById("demo").innerHTML = "Driver: Nguyen Huu Duc (84) 90-217-4558 | Monitor: Tran Thi Thu Thao (84) 90-286-0135";
} else if ('~(gpv.busnumber)'=='Bus 6') {
  document.getElementById("demo").innerHTML = "Driver: Pham Anh Tuan (84) 93-867-7970 | Monitor: Nguyen Le Kim Thuy (84) 126-711-5315";
} else if ('~(gpv.busnumber)'=='Bus 7') {
  document.getElementById("demo").innerHTML = "Driver: Tran Chi Linh (84) 98-853-0258 | Monitor: Ho Thi Thu Trang (84) 90-648-3441";
} else if ('~(gpv.busnumber)'=='Bus 8') {
  document.getElementById("demo").innerHTML = "Driver: Mr. Binh (84) 92-444-6698 | Monitor: Lu Vi Thuy (84) 93-760-3832";
} else if ('~(gpv.busnumber)'=='Van 1') {
  document.getElementById("demo").innerHTML = "Driver: Duong Quang Hieu (84) 90-316-2641 | Monitor: Nguyen Ngoc (84) 93-805-0819";
} else if ('~(gpv.busnumber)'=='Van 2') {
  document.getElementById("demo").innerHTML = "Driver: Mr. Phong (84) 91-914-7306 | Monitor: Phuong Thi My Dung (84) 93-803-2507";
} else if ('~(gpv.busnumber)'=='Van 3') {
  document.getElementById("demo").innerHTML = "Driver: Pham Phuc Dai (84) 90-939-3472 | Monitor: Tran Thi Han Hoan (84) 91-553-3467";
} else if ('~(gpv.busnumber)'=='Van 4') {
  document.getElementById("demo").innerHTML = "Driver: Vu Thai Hong (Long) (84) 91-360-1602 | Monitor: Duong Thi Lanh (84) 90-314-9296";
} else if ('~(gpv.busnumber)'=='Van 5') {
  document.getElementById("demo").innerHTML = "Driver: Nguyen Hoang Thich (84) 93-402-6073 | Monitor: Duong Thi Hien (84) 93-785-4299";
} else if ('~(gpv.busnumber)'=='Van 6') {
  document.getElementById("demo").innerHTML = "Driver: Le Hoang An (84) 91-803-1819 | Monitor: Luong Thi Thu Yen (84) 90-253-2862";
} else if ('~(gpv.busnumber)'=='Van 7') {
  document.getElementById("demo").innerHTML = "Driver: Nguyen Tan Buu (84) 90-589-6220 | Monitor: Phan Thi Kim Cuc (84) 93-834-2083";
} else {
  document.getElementById("demo").innerHTML = ".";
}
</script>

<table id="transportationExport" class="grid" style="width:100%">
<tr>
  <th>Monitor</th>
  <th>Students</th>
  <th>Grade</th>
  <th>Gender</th>
  <th>HR Teacher</th>
  <th colspan=2>MON</th>
  <th colspan=2>TUE</th>
  <th colspan=2>WED</th>
  <th colspan=2>THU</th>
  <th colspan=2>FRI</th>
  <th>Special Instruction</th>
</tr>
<tr>
  <td colspan=5></td>
  <td>AM</td>
  <td>PM</td>
  <td>AM</td>
  <td>PM</td>
  <td>AM</td>
  <td>PM</td>
  <td>AM</td>
  <td>PM</td>
  <td>AM</td>
  <td>PM</td>
</tr>

~[tlist_sql;
 WITH ROUTE AS (
  SELECT t.BUSNUMBER AS BUSNUMBER,
    '.' AS MONITOR,
    s.LASTFIRST AS STUDENTLASTFIRST,
    DECODE(s.grade_level,0,'K',-2,'EC3',-1,'EC4',TRIM(TO_CHAR(s.grade_level))) AS GRADE,
    s.gender AS GENDER,
    u.SSIS_HR_TEACHER AS HR_TEACHER,
    TO_CHAR(t.SPECIALINSTRUCTIONS) AS SPECIALINSTRUCTIONS,
    ROW_NUMBER() OVER (PARTITION BY t.BUSNUMBER Order By s.LASTFIRST)AS RN
  FROM TRANSPORTATION t
    INNER JOIN STUDENTS s ON s.id=t.STUDENTID
    INNER JOIN U_StudentsUserFields u ON s.DCID = u.StudentsDCID
    INNER JOIN U_DEF_EXT_TRANSPORTATION x ON x.TRANSPORTATIONDCID=t.DCID
  WHERE s.ENROLL_STATUS =0
  AND t.fromto = 'To'
  ~[if#1.~(gpv.busnumber)=]
        /* NO bus number provided. */
        AND t.busnumber = 'zzz'
  [else#1]
      ~[if#2.~(gpv.busnumber)=ALL]
          AND t.busnumber LIKE '%'
      [else#2]
      /* Bus number provided. . */
      AND t.busnumber = ('~[gpv:busnumber]')
      [/if#2]
  [/if#1]
)
SELECT ID, BUSNUMBER,
       MONITORDETAIL, STUDENTLASTFIRST, GRADE, GENDER,
       HR_TEACHER,
       SPECIALINSTRUCTIONS
FROM(
   SELECT RN AS ID, BUSNUMBER,
          '&lt;font size=4&gt;' || BUSNUMBER || '&lt;/font&gt;&lt;br&gt;' || MONITOR   as MONITORDETAIL,
          '' AS STUDENTLASTFIRST, '' AS GRADE, '' AS GENDER,
          '' AS HR_TEACHER,
          '' AS SPECIALINSTRUCTIONS,
          'Group' As RowType
   FROM ROUTE WHERE RN = 1
   UNION ALL
   SELECT RN AS ID, BUSNUMBER,
          RN || '.' AS MONITORDETAIL,
          STUDENTLASTFIRST, GRADE, GENDER,
          HR_TEACHER,
          SPECIALINSTRUCTIONS,
          'Item' As RowType
   FROM ROUTE
)X
ORDER BY BUSNUMBER ASC
, CASE WHEN RowType='Group' THEN 0 ELSE 1 END ASC
, STUDENTLASTFIRST ASC
;]

  <tr>
    <td style="display:none"> ~(ID) </td>
    <td style="display:none"> ~(BUSNUMBER) </td>
    <td><strong> ~(MONITORDETAIL) </strong></td>
    <td> ~(STUDENTLASTFIRST)</td>
    <td> ~(GRADE)</td>
    <td> ~(GENDER)</td>
    <td> ~(HR_TEACHER)</td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td> ~(SPECIALINSTRUCTIONS)</td>
  </tr>

[/tlist_sql]

</table>
<!-- end of title and student content -->

</body>
</html>

Thursday, February 7, 2019

ThermalTake Tt esports Commander Mouse intermittently stops working in Linux Mint

So far nothing worked yet but I am making all attempt to document the things I have tried.
sudo sh -c "echo -1 > /sys/module/usbcore/parameters/autosuspend"

sudo apt-get install powernap
sudo powernap-action --disable usb_autosuspend
------
cat /etc/X11/xorg.conf
Section "InputClass"
    Identifier "Mouse Remap"
    MatchProduct "TT Esport Commander Mouse"
    MatchDevicePath "/dev/input/event*"
    Option "ButtonMapping" "1 2 3 4 5 6 7 8 9 10 11 12 0 0 0"
EndSection

Madcatz Rat7 stops working intermittently in Linux Mint

This method works for sure for Linux Mint

sudo mkdir /etc/X11/xorg.conf.d
sudo vi /etc/X11/xorg.conf.d/910-rat.conf

File includes:

Section "InputClass"
Identifier "R.A.T."
MatchProduct "R.A.T.7|R.A.T.9"
MatchDevicePath "/dev/input/event*"
Option "Buttons" "17"
Option "ButtonMapping" "1 2 3 4 5 0 0 8 9 7 6 12 0 0 0 16 17"
Option "AutoReleaseButtons" "13 14 15"
Option "ZAxisMapping" "4 5 6 7"
EndSection
sudo apt-get update
sudo apt-get upgrade
reboot

NOTE  Try these method: https://github.com/MayeulC/Saitek

Someone else suggested a simpler configuration and I have tried it.  It works fine.
 Section "InputClass"
        Identifier "R.A.T."
        MatchProduct "R.A.T.7|R.A.T.9"
        MatchDevicePath "/dev/input/event*"
Option    "ButtonMapping" "1 2 3 4 5 6 7 8 9 0 0 0 0 0"
EndSection

MOUSE SETTING
As for the single left click registered as a double click, there is a small middle button to control the speed of the mouse movement, click backward until the red light on the left side has only one lit bar

Also in combination with the mouse and trackpad setting: turn down the sensitivity of the double-click.

And the double-click timeout setting to very long.

It is still not perfect but tolerable.

Photoshop Installation on Linux Mint

There are many in between steps that are trial and error.  Look at logs and error message to figure out!
sudo apt-get install wine-stable ttf-mscorefonts-installer
Then run the following to create your own .wine folder.
winecfg
sudo apt install wine32 
 
Use PlayonLinux from the repository NOT from flatpak to install Photoshop CS6
Note: wine version 3.4 is called from the playonlinux script. 

Before accepting the EULA agreement, turn off the network to avoid creating an Adobe ID process
ifconfig
sudo ifconfig <interface> down